【问题标题】:How to stop selenium webdriver from waiting for page load?如何阻止 selenium webdriver 等待页面加载?
【发布时间】:2014-11-14 19:07:17
【问题描述】:

有时当我运行测试时,网站永远不会停止加载并且我的测试卡在它上面。如何将 driver.get() 方法设置为不等待页面加载?如果不可能,是否有任何解决方法或其他方法可以替代 driver.get()?

【问题讨论】:

  • 您应该问自己的第一个问题是为什么您的网站没有停止加载?
  • 你将如何测试一个永不停止加载的网站?
  • 这不是我的网站,我不需要完全加载它,我只需要几个控件/按钮来加载。
  • 如果网站加载速度很慢,那么没有硒的控制/方法可以帮助解决问题..必须等到网站加载。

标签: java selenium webdriver pageload


【解决方案1】:

提前退出页面加载等待的最简单方法是设置页面加载超时。当超时到期时,您可以捕获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 或类似名称来确保您感兴趣的元素出现在页面上。

【讨论】:

  • 这对我不起作用。它一直等待页面加载完成以执行下一个命令。
【解决方案2】:

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

        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");
        }

【讨论】:

    猜你喜欢
    • 2012-07-07
    • 2019-01-31
    • 1970-01-01
    • 2014-09-26
    • 1970-01-01
    • 1970-01-01
    • 2012-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多