在没有任何时间框架的页面加载之前将使用哪个等待,即应该无限期地等待页面加载(selenium,java)
driver.manage() . timeouts() . implicitlyWait( 10 ,TimeUnit.SECONDS);
WebDriverWait wait = new WebDriverWait(driver, 10 );
以上语法都有时间范围,但webdriver应无限等待,直到页面加载为止 .
请举例说明
driver.manage() . timeouts() . implicitlyWait(10,TimeUnit.SECONDS);
Implicit Wait
隐式等待将告诉Web驱动程序在它抛出“No Such Element Exception”之前等待一定的时间 . 在您的示例中,您已声明了一个隐含的等待,时间范围为10秒 . 这意味着如果元素在该时间范围内不位于网页上,则会引发异常 .
WebDriverWait wait = new WebDriverWait(driver,10);
Explicit Wait 显式等待用于告知Web驱动程序在抛出"ElementNotVisibleException"异常之前等待某些条件(预期条件)或超过最大时间 .
Your Solution :
Fluent Wait
流畅的等待用于告诉Web驱动程序等待条件,以及在抛出“ElementNotVisibleException”异常之前我们想要检查条件的频率 .
如果我们声明显式等待20秒,则元素可能会在10秒,20秒甚至更长时间内加载 . 在抛出异常之前它会等到指定的时间 . 在这种情况下,流畅的等待是理想的等待使用,因为这将尝试以不同的频率找到元素,直到它找到它或最终的计时器用完为止 .
Example :
等待等待=新的FluentWait(驱动程序).withTimeout(30000,TimeUnit.SECONDS).pollingEvery(5,TimeUnit.SECONDS).ignoring(NoSuchElementException.class);
要确保完全加载页面,您需要检查文档状态是否处于完整状态,这些都不等待页面加载 document.readyState
document.readyState
2 回答
Implicit Wait
隐式等待将告诉Web驱动程序在它抛出“No Such Element Exception”之前等待一定的时间 . 在您的示例中,您已声明了一个隐含的等待,时间范围为10秒 . 这意味着如果元素在该时间范围内不位于网页上,则会引发异常 .
Explicit Wait 显式等待用于告知Web驱动程序在抛出"ElementNotVisibleException"异常之前等待某些条件(预期条件)或超过最大时间 .
Your Solution :
Fluent Wait
流畅的等待用于告诉Web驱动程序等待条件,以及在抛出“ElementNotVisibleException”异常之前我们想要检查条件的频率 .
如果我们声明显式等待20秒,则元素可能会在10秒,20秒甚至更长时间内加载 . 在抛出异常之前它会等到指定的时间 . 在这种情况下,流畅的等待是理想的等待使用,因为这将尝试以不同的频率找到元素,直到它找到它或最终的计时器用完为止 .
Example :
要确保完全加载页面,您需要检查文档状态是否处于完整状态,这些都不等待页面加载
document.readyState