在用selenium操作driver,有时候窗口里面会嵌套着一个小窗体,小窗体里面的滚动条下拉时需要先获取小窗体中的某个元素,执行执行点击操作,才可以使其滚动条下拉
首先导入selenium-java的jar包
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.4.0</version>
</dependency>
代码如下
import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.WebDriverWait;
public class Test {
public static void main(String[] args) throws Exception{
System.out.println("start firefox browser...");
System.setProperty("webdriver.chrome.driver","D:/development/chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("enable-automation");
options.addArguments("--disable-infobars");
WebDriver driver = new ChromeDriver(options);
String url = null;
url = "目标网址" ;
// url = "http://www.hao123.com";
driver.get(url);
System.out.println("title is: "+driver.getTitle());
driver.manage().window().maximize();//窗口最大化
Thread.sleep(5000);//等待5秒 页面元素加载完成
WebElement element = driver.findElement(By.xpath("小窗体中的元素xpath定位"));
element.click();//不点击滚动条下拉就不好使,我也是醉了
//执行js使窗口滚动条下拉到底部
JavascriptExecutor driver_js= (JavascriptExecutor) driver;
driver_js.executeScript("window.scrollTo(0,document.body.scrollHeight)");
//利用js代码键入搜索关键字
// driver_js.executeScript("document.getElementById(\"kw\").value=\"hello\"");
// driver.findElement(By.id("su")).click();
}
}
例子:打开hao123网页,然后下拉到最底端,5秒后关闭
import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.WebDriverWait;
public class Test {
public static void main(String[] args) throws Exception{
System.out.println("start firefox browser...");
System.setProperty("webdriver.chrome.driver","D:/development/chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("enable-automation");
options.addArguments("--disable-infobars");
WebDriver driver = new ChromeDriver(options);
String url = null;
url = "http://www.hao123.com";
driver.get(url);
System.out.println("title is: "+driver.getTitle());
//窗口最大化
driver.manage().window().maximize();
//等待元素页面加载
waitForElementToLoad(driver, 5, By.xpath("//*[@id=\"box-weibobottom\"]/div[1]/div[2]/div/h3/a"));
//执行js使窗口滚动条下拉到底部
JavascriptExecutor driver_js= (JavascriptExecutor) driver;
driver_js.executeScript("window.scrollTo(0,document.body.scrollHeight)");
Thread.sleep(5000);
driver.close();
}
public static void waitForElementToLoad(WebDriver driver, int timeOut, final By By) {
try {
(new WebDriverWait(driver, timeOut)).until(new ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver driver) {
WebElement element = driver.findElement(By);
return element.isDisplayed();
}
});
} catch (TimeoutException e) {
System.out.println("超时!! " + timeOut + " 秒之后还没找到元素 [" + By + "]");
}
}
}