selenium下拉等待页面完全加载
2018-01-12 11:24
344 查看
在使用selenium的过程中,我们会遇到打开一个页面后,等待进度条加载完成,再去滚动鼠标或者下拉页面的时候,页面还会继续加载内容,这就会导致在定位元素并且滑动的时候,代码报错:元素不存在。
这是因为页面需要手动下拉或者向下滑动,才能加载全部(剩下的)的内容。可以通过sendKeys(Keys.DOWN)方法多下拉几次,来实现页面全部内容的加载。
下面示例是以百度新闻为例:
package com.keydom;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class selenium2 {
public static WebDriver driver;
public static void main(String[] args) throws Exception {
System.setProperty("webdriver.chrome.driver", "E:\\eclipse_jar\\selenium_jar\\chromedriver.exe");
driver = new ChromeDriver();
driver.get("http://www.baidu.com/");
Thread.sleep(1000);
driver.findElement(By.xpath("//*[@id=\"u1\"]/a[1]")).click();
Thread.sleep(2000);
/**
* 用sendKeys(Keys.DOWN)方法下拉加载页面
* 可能会需要多次下拉才能加载全部内容
* 以百度新闻为例
*/
driver.findElement(By.xpath("//*[@id=\"channel-all\"]/div/ul/li[1]/a")).sendKeys(Keys.DOWN);
Thread.sleep(1000);
driver.findElement(By.xpath("//*[@id=\"channel-all\"]/div/ul/li[1]/a")).sendKeys(Keys.DOWN);
Thread.sleep(1000);
driver.findElement(By.xpath("//*[@id=\"channel-all\"]/div/ul/li[1]/a")).sendKeys(Keys.DOWN);
Thread.sleep(1000);
driver.findElement(By.xpath("//*[@id=\"channel-all\"]/div/ul/li[1]/a")).sendKeys(Keys.DOWN);
Thread.sleep(1000);
((JavascriptExecutor)driver).executeScript("window.scrollTo(0, document.body.scrollHeight)");
Thread.sleep(2000);
((JavascriptExecutor)driver).executeScript("scrollTo(0, 0)");
Thread.sleep(2000);
((JavascriptExecutor)driver).executeScript("window.scrollTo(0, document.body.scrollHeight)");
}
}
这是因为页面需要手动下拉或者向下滑动,才能加载全部(剩下的)的内容。可以通过sendKeys(Keys.DOWN)方法多下拉几次,来实现页面全部内容的加载。
下面示例是以百度新闻为例:
package com.keydom;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class selenium2 {
public static WebDriver driver;
public static void main(String[] args) throws Exception {
System.setProperty("webdriver.chrome.driver", "E:\\eclipse_jar\\selenium_jar\\chromedriver.exe");
driver = new ChromeDriver();
driver.get("http://www.baidu.com/");
Thread.sleep(1000);
driver.findElement(By.xpath("//*[@id=\"u1\"]/a[1]")).click();
Thread.sleep(2000);
/**
* 用sendKeys(Keys.DOWN)方法下拉加载页面
* 可能会需要多次下拉才能加载全部内容
* 以百度新闻为例
*/
driver.findElement(By.xpath("//*[@id=\"channel-all\"]/div/ul/li[1]/a")).sendKeys(Keys.DOWN);
Thread.sleep(1000);
driver.findElement(By.xpath("//*[@id=\"channel-all\"]/div/ul/li[1]/a")).sendKeys(Keys.DOWN);
Thread.sleep(1000);
driver.findElement(By.xpath("//*[@id=\"channel-all\"]/div/ul/li[1]/a")).sendKeys(Keys.DOWN);
Thread.sleep(1000);
driver.findElement(By.xpath("//*[@id=\"channel-all\"]/div/ul/li[1]/a")).sendKeys(Keys.DOWN);
Thread.sleep(1000);
((JavascriptExecutor)driver).executeScript("window.scrollTo(0, document.body.scrollHeight)");
Thread.sleep(2000);
((JavascriptExecutor)driver).executeScript("scrollTo(0, 0)");
Thread.sleep(2000);
((JavascriptExecutor)driver).executeScript("window.scrollTo(0, document.body.scrollHeight)");
}
}
相关文章推荐
- Selenium-webdriver系列教程(10)————如何智能的等待页面加载完成
- Selenium2 入门[3] —— 等待页面加载完毕
- Selenium-webdriver系列教程(10)——如何智能的等待页面加载完成
- java selenium智能等待页面加载完成示例代码
- java selenium (十三) 智能等待页面加载完成
- python爬虫--selenium等待页面加载
- selenium webdriver(Appium)如何等待页面元素加载完成
- selenium之如何等待页面元素加载完成
- selenium webdriver(Appium)如何等待页面元素加载完成
- java selenium (十三) 智能等待页面加载完成
- selenium webdriver学习(十一)-怎么等待页面元素加载完成
- Selenium WebDriver等待页面元素加载完成
- selenium 学习-js执行,事件模拟,页面加载等待
- java selenium (十三) 智能等待页面加载完成
- selenium webdriver(Appium)如何等待页面元素加载完成
- Selenium_等待页面加载完毕
- 关于selenium的智能等待页面加载的问题
- selenium webdriver学习(十一)------------如何等待页面元素加载完成
- selenium+python登录登出百度,等待页面加载,鼠标定位
- selenium webdriver学习-怎么等待页面元素加载完成