有时在关闭Javascript的WebDriver上运行测试时,WebDriver在找到元素时会因ElementNotFound错误而崩溃,并尝试单击它.
但是,元素显然在那里!
阅读本文后:http://code.google.com/p/selenium/wiki/FrequentlyAskedQuestions#Q : _My_XPath_finds_elements_in_one_browser,_but_not_in_others._Wh
我得出结论,webdriver必须等到网页完成加载后才能等待.我如何使用Webdriver Wait类?有人能提供一个例子吗?
nil*_*esh 18
此示例发布在Google网上论坛中.据谷歌开发人员称:
1使用隐式等待.在这里,驱动程序将等待直到指定的超时,直到找到该元素.请务必阅读javadoc以获取警告.用法:
driver.get("http://www.google.com");
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
WebElement element = driver.findElement(By.name("q"));
driver.manage().timeouts().implicitlyWait(0, TimeUnit.SECONDS);
// continue with test...
Run Code Online (Sandbox Code Playgroud)
2使用org.openqa.selenium.support.ui.WebDriverWait课程.这将轮询直到预期条件为真,返回该条件的结果(如果它正在寻找一个元素).这比隐式等待更灵活,因为您可以定义任何自定义行为.用法:
Function<WebDriver, WebElement> presenceOfElementLocated(final By locator) {
return new Function<WebDriver, WebElement>() {
public WebElement apply(WebDriver driver) {
return driver.findElement(locator);
}
};
}
// ...
driver.get("http://www.google.com");
WebDriverWait wait = new WebDriverWait(driver, /*seconds=*/3);
WebElement element = wait.until(presenceOfElementLocated(By.name("q"));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15672 次 |
| 最近记录: |