隐式等待
根据Java Docs的ImplicitWait是指定WebDriver实例的时间量,即驱动程序在搜索元素时应该等待的时间量,如果它不是立即出现在HTML DOM中的NANOSECONDS,MICROSECONDS,MILLISECONDS,SECONDS,MINUTES,尝试查找一个或多个元素(如果它们不是立即可用)时的HOURS或DAYS 。默认设置为0,这意味着driver
当找到查找一个或多个元素的指令时,搜索开始并且结果立即可用。
在这种情况下,在重新加载网页后,一个或多个元素可能会/可能不会在立即搜索中找到。因此,您的自动化框架可能面临以下任何异常:
因此我们引入ImplicitWait。通过诱导ImplicitWait,驱动程序将轮询DOM 树,直到在配置的时间内找到元素,然后在抛出NoSuchElementException之前查找元素。到那时,您一直在寻找的一个或多个元素可能在HTML DOM中可用。在您的代码中,您已经将ImplicitWait设置为10秒的值,驱动程序将轮询HTML DOM 10秒。
蟒蛇:
driver.implicitly_wait(10)
爪哇:
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
点网:
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
最后,一旦您设置了ImplicitWait,WebDriver实例(即驱动程序)就能够携带此配置直到其生命周期。但是,如果您需要更改WebDriver实例的粗略时间,即驱动程序等待,那么您可以重新配置它,如下所示:
蟒蛇:
driver.implicitly_wait(5)
爪哇:
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
点网:
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
如果您想在任何时候取消它,ImplicitWait
您可以按如下方式重新配置它:
蟒蛇:
driver.implicitly_wait(0)
爪哇:
driver.manage().timeouts().implicitlyWait(0, TimeUnit.SECONDS);
点网:
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(0);
回答您的问题
- ...等待 URL ...:不,ImplicitWait对页面加载没有影响。
- ...对于查找元素...:是的,ImplicitWait将定义
WebDriver
实例等待查找元素的粗略时间。
- ...隐式等待一次...:是的,您只需要配置一次ImplicitWait ,它适用于WebDriver实例的整个生命周期。
- ...每个元素搜索...:是的,适用于任何时候
findElement()
或findElements()
被调用。