在没有任何时间范围的页面加载之前将使用哪个等待,即应该无限期地等待页面加载(selenium,java)
以上语法都有时间范围 但webdriver应无限期等待,直到页面加载为止。
请举例说明
答案 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