// Waiting 30 seconds for an element to be present on the page, checking
// for its presence once every 5 seconds.
Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
.withTimeout(30, SECONDS)
.pollingEvery(5, SECONDS)
.ignoring(NoSuchElementException.class);
WebElement foo = wait.until(new Function<WebDriver, WebElement>() {
public WebElement apply(WebDriver driver) {
return driver.findElement(By.id("foo"));
}
});
ImplicitWait
{{{a1}是一个实现,配置}的{{},以轮询 ,{ ,{{{}}<强>,
WebDriver
实例,即{HTML DOM
在一定时间段内的一定时间内(中间的NANOSECONDS
,MICROSECONDS
,MILLISECONDS
,{HOURS
或DAYS
时。默认设置是0这意味着driver
当找到一个或多个元素的指令时,搜索开始,结果立即可用。在在这种情况下,重新加载网页后,立即搜索可能会/可能找不到一个或多个元素。因此您的
Automation Script
可能面临以下任何一种异常:NoSuchElementException
TimeoutException
ElementNotVisibleException
ElementNotSelectableException
因此我们引入
ImplicitWait
。通过引入ImplicitWait
,driver
将轮询HTML DOM
查找元素的配置时间量。到那时,您一直在寻找的一个或多个元素可能在HTML DOM
中可用。在您的代码中,您已经将ImplicitWait
设置为10秒,driver
将轮询HTML DOM
秒。在Python:
Java:
最后,一旦您设置了
ImplicitWait
,那么WebDriver
实例,即driver
就能够将此配置保留到其生命周期。但如果您需要将WebDriver
实例的时间粗糙度(即driver
更改为wait
,则可以按如下方式重新配置:Python:
Java:
如果在任何时候您想使
ImplicitWait
无效,您可以按如下方式重新配置它:Python:
Java:
Fluent Wait
^{} 是^{} 接口的实现,通过它我们可以动态地配置
timeout
和polling interval
。可以定义FluentWait
的实例来配置等待条件的最大时间量以及必须检查条件的频率。用户还可以配置wait,以便在等待某个元素时忽略特定类型的exceptions
,比如页面上的NoSuchElementExceptions
。在Usage
ExplicitWait
ExplicitWait
俗称^{WebDriver
实例,等待满足某个条件后再继续下一行代码。有一些方法可以帮助我们实现ExplicitWait
,这些方法只需等待所需的时间。WebDriverWait
与ExpectedCondition
结合是实现ExplicitWait
的方法之一。在例如:
说明:
ExplicitWait
的这个实现在抛出一个TimeoutException
之前最多等待10秒,或者如果它找到了元素,那么它将在0到10秒内返回。默认情况下,WebDriverWait
每隔500毫秒调用ExpectedCondition
,直到成功返回。成功ExpectedCondition
函数类型的essful返回值是true或not null对象的Boolean
值。在预期条件:
自动化
Testing Web/Mobile Applications
的Web浏览器时,会遇到一些常见的情况。Java、C和Python绑定包含这些方便的方法,因此我们不必自己编写ExpectedCondition
类,也不必为它们创建自己的实用程序包。一些Expected Conditions
是:alertIsPresent()
elementToBeClickable(locator)
elementToBeSelected(WebElement)
frameToBeAvailableAndSwitchToIt(locator)
invisibilityOf(element)
您可以在这里找到^{} 支持的所有方法。在
此特定查询:
HTML DOM
,直到找到该元素或配置的超时过期,然后抛出一个NoSuchElementException
。在HTML DOM
,直到至少找到一个元素或配置的超时过期。在因此,根据第一种情况,驾驶员只需等待3秒。在
相关问题 更多 >
编程相关推荐