在webdriver.get(url)上设置隐式超时

时间:2014-01-13 15:19:44

标签: java firefox selenium settimeout

我的网页加载存在一些问题,因为网页加载了一些异步内容, 我想中断页面加载以继续我的测试的后续步骤。

1- driver.get(url)这会在1800秒加载后抛出 timeoutException。

2-我已经补充说 driver.manage()。timeouts()。implicitlyWait(TEST_WAIT,TimeUnit.SECONDS); 它没有改变任何东西。

我做了 driver.manage()。timeouts()。setScriptTimeout(time,unit) 也没有变化

3-最后一次尝试如下 JavascriptExecutor js =(JavascriptExecutor)驱动程序; js.executeScript(“return window.stop()”); 这不起作用

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

您是否尝试过设置页面加载超时?

driver.manage().timeouts().setPageLoadTimeout(time, unit);

这应该在超时到期时抛出TimeoutException,您可以捕获并继续下一个操作。警告(可能未在所有浏览器中实现,行为可能不同)适用。

答案 1 :(得分:0)

解决方案: 以下解决方案可能会解决您的等待问题。让我们试试吧!

static void waitForPageLoad(WebDriver wdriver) {
    WebDriverWait wait = new WebDriverWait(wdriver, 60);

    Predicate<WebDriver> pageLoaded = new Predicate<WebDriver>() {

        @Override
        public boolean apply(WebDriver input) {
            return ((JavascriptExecutor) input).executeScript("return document.readyState").equals("complete");
        }

    };
    wait.until(pageLoaded);
}