如何阻止selenium webdriver等待页面加载?

时间:2014-11-14 19:07:18

标签: java selenium webdriver pageload

有时当我进行测试时,网站永远不会停止加载,我的测试就会卡在上面。如何设置driver.get()方法不等待页面加载?如果不可能有任何工作或其他方法可以替换driver.get()?

2 个答案:

答案 0 :(得分:9)

提前退出页面加载等待的最简单方法是设置页面加载超时。超时到期后,您可以捕获TimeoutException并继续进行下一步测试。调用它的代码如下所示:

// Set the page load timeout to 10 seconds.
driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);

try {
  driver.get("http://url/to/my/slow/loading/page");
} catch (TimeoutException e) {
  // Ignore the exception.
}

// Proceed with your next step here.

请注意,您可能需要使用WebDriverWait或类似内容,以确保您感兴趣的元素出现在页面上。

答案 1 :(得分:0)

我们可以设置pageLoadTimeout,一旦设置它就会通过webdriver会话,并且如果由于超时而抛出异常,那么我们无法恢复相同的会话,因此需要创建新的实例。

        WebDriver driver = new FirefoxDriver();

        //waits 10 seconds for page to load
        driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);
        try {
            driver.get("https://yourdomain.com");
        } catch (TimeoutException e) {
            driver.close();
            driver.quit();

            //create new instance of webdriver
            driver = new FirefoxDriver();

            //waits 5 minutes for page to load
            driver.manage().timeouts().pageLoadTimeout(300, TimeUnit.SECONDS);
            driver.get("https://yourdomain.com");
        }