等待硒webdriver直到加载完成

时间:2013-12-16 06:50:51

标签: java selenium automation selenium-webdriver testng

我在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);
    }

5 个答案:

答案 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);