有时,在关闭 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 类?有人可以举个例子吗?
这个例子已发布在 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...
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"));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)