我在eclipse中使用了selenium webdriver和TestNG。问题是一些数据中途的页面关联,这次重载的时间很灵活,这就是为什么我无法应用显式等待时间。我想制作webdriver等到重新加载完成。
我试图通过此代码执行此操作...但它无法正常工作
public void waitForPageLoadingToComplete() throws Exception {
ExpectedCondition<Boolean> expectation = new ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver driver) {
return ((JavascriptExecutor) driver).executeScript(
"return document.readyState").equals("complete");
}
};
Wait<WebDriver> wait = new WebDriverWait(driver, 30);
wait.until(expectation);
}
答案 0 :(得分:1)
尝试使用以下代码处理页面加载/页面刷新超时
WebDriver driver = new FireFoxDriver();
driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
请使用最新版本的Chrome驱动程序,因为旧版Chrome驱动程序不会处理页面等待。
答案 1 :(得分:1)
等待无限期不是个好主意。网站的时间安排也是测试的一部分。如果可能,请查看您正在测试的“页面”的服务水平协议。如果没有对网站进行速度测试(这是一种测试方法:http://tools.pingdom.com/fpt/)并使用你得到的平均时间。如果这也不起作用,最后一个选择是使用行业范围的标准。
答案 2 :(得分:1)
document.readyState()不反映正确的页面加载时间(例如 - 它不等待图像/脚本完全加载)。建议并测试选项以等待页面上的元素(最好是在下一步测试中操作的元素)。正如其他人建议使用WebDriverWait和预期条件方法,如“visibilityOf”,“presenceOfElement”或许多more,它应该没问题。
答案 3 :(得分:0)
您应该使用WebDriverWait
并将超时设置为您可以等待的最长时间。一旦您发现页面加载了所需的数据(例如,通过检查某个元素的可见性),您就可以继续进行测试用例。
请参阅selenium docs中的示例。
答案 4 :(得分:0)
driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);