在页面加载

时间:2017-04-25 10:47:37

标签: java selenium

在没有任何时间范围的页面加载之前将使用哪个等待,即应该无限期地等待页面加载(selenium,java)

  1. driver.manage()。timeouts()。implicitlyWait( 10 ,TimeUnit.SECONDS);
  2. WebDriverWait wait = new WebDriverWait(driver, 10 );
  3. 以上语法都有时间范围 但webdriver应无限期等待,直到页面加载为止。

    请举例说明

4 个答案:

答案 0 :(得分:0)

要确保完全加载页面,您需要检查文档状态是否处于完整状态,这些都没有等待页面加载document.readyState

答案 1 :(得分:0)

  

driver.manage()。timeouts()。implicitlyWait(10,TimeUnit.SECONDS);

隐含等待

隐式等待会告诉网络驱动程序在它抛出“没有这样的元素异常”之前等待一定的时间"。 在您的示例中,您已声明了一个隐含的等待,时间范围为10秒。这意味着如果元素在该时间范围内不位于网页上,则会引发异常。

  

WebDriverWait wait = new WebDriverWait(driver,10);

明确等待 显式等待用于告诉Web驱动程序在抛出" ElementNotVisibleException"之前等待某些条件(预期条件)或超过最大时间。异常。

您的解决方案:

流利等待

流畅的等待用于告诉网络驱动程序等待条件,以及在抛出" ElementNotVisibleException之前我们想检查条件的频率"异常。

如果我们声明显式等待20秒,那么元素可能会在10秒,20秒甚至更长时间内加载。在抛出异常之前它会等到指定的时间。在这种情况下,流畅的等待是理想的等待使用,因为这将尝试以不同的频率找到元素,直到找到它或最终的计时器用完为止。

示例:

  

等待等待=新的FluentWait(司机)
            .withTimeout(30000,TimeUnit.SECONDS).pollingEvery(5,   TimeUnit.SECONDS).ignoring(NoSuchElementException.class);

答案 2 :(得分:0)

WebDriverWait wait = new WebDriverWait(driver, timeoutS);

wait.until(new ExpectedCondition<Boolean>()
    {
        @Override
        public Boolean apply(WebDriver driver)
        {
                return ((JavascriptExecutor) driver).executeScript(
                    "return document.readyState").equals("complete");
        }
});

答案 3 :(得分:-1)

这一切都取决于您对加载的定义。

在后台,硒在多个上下文中使用document.readyState来尝试确定是否加载了页面。如果幸运的话,您对页面加载的定义将与Selenium跟踪document.readyState状态的尝试相符。

Selenium使用pageLoadTimeout来确定等待页面加载的时间(如上所述,Selenium将跟踪文档document.readyState的状态)。您可以像这样修改默认超时:

driver.manage().timeouts().pageLoadTimeout(15, TimeUnit.SECONDS);

如果您对页面加载的定义与硒不同,那么您将需要执行一些额外的工作,这通常涉及添加显式等待以查找与您感兴趣的特定元素交互,从而使其可见并适当显示。状态。

可使用超时Javadoc Here