启动ChromeDriver
普通启动方式
System.setProperty("webdriver.chrome.driver", "Driver路径");
WebDriver driver = new ChromeDriver();
driver.get("http://www.baidu.com/");
ChromeDriverService
执行以上代码你会发现ChromeDriver仅是在创建是启动,调用quit时关闭浏览器。
ChromeDriver是轻量级的服务若在一个比较大的测试套件中频繁的启动关闭,会增加一个比较明显的延时导致浏览器进程不被关闭的情况发生,为了避免这一状况我们可以通过ChromeDriverService来控制ChromeDriver进程的生死,达到用完就关闭的效果避免进程占用情况出现(Running the server in a child process)。
ChromeDriverService service = new ChromeDriverService.Builder() .usingChromeDriverExecutable(new File("Driver路径")).usingAnyFreePort().build();
service.start();
driver = new ChromeDriver();
driver.get("http://www.baidu.com");
driver.quit();
// 关闭 ChromeDriver 接口
service.stop();
或者
public static voidmain(String[] args) throws IOException {
// 创建一个 ChromeDriver 的接口,用于连接 Chrome
ChromeDriverService service = newChromeDriverService.Builder().usingDriverExecutable(
newFile("Driver路径")) .usingAnyFreePort().build();
service.start();
// 创建一个 Chrome 的浏览器实例
WebDriver driver = newRemoteWebDriver(service.getUrl());
// 让浏览器访问 Baidu
driver.get("http://www.baidu.com");
// 用下面代码也可以实现
//driver.navigate().to("http://www.baidu.com");
// 获取 网页的 title
System.out.println(" Page title is: " +driver.getTitle());
// 通过 id 找到 input 的 DOM
WebElement element =driver.findElement(By.id("kw1"));
// 输入关键字
element.sendKeys("zTree");
// 提交 input 所在的 form
element.submit();
// 通过判断 title 内容等待搜索页面加载完毕,间隔秒
(new WebDriverWait(driver, 10)).until(newExpectedCondition() {
publicBoolean apply(WebDriver d) {
returnd.getTitle().toLowerCase().startsWith("ztree");
}
});
// 显示搜索结果页面的 title
System.out.println(" Page title is: " +driver.getTitle());
// 关闭浏览器
driver.quit();
// 关闭 ChromeDriver 接口
service.stop();
}