我从事开发和QA /自动化测试的新手。 我试图理解以下代码;
public WebElement getVisibleElement( final By by, final WebElement parentElement, int timeoutValue, TimeUnit timeoutPeriod, int pollingInterval, TimeUnit pollingPeriod ) {
return fluentWait(timeoutValue, timeoutPeriod, pollingInterval, pollingPeriod).until( new Function<WebDriver, WebElement>() {
public WebElement apply(WebDriver driver) {
try {
} catch {
}
return null;
}
});
}
在我的同班同学中,我也有;
public Wait<WebDriver> fluentWait(int timeoutValue, TimeUnit timeoutPeriod, int pollingInterval, TimeUnit pollingPeriod) {
return new FluentWait<WebDriver>(this.webDriver)
.withTimeout(timeoutValue, timeoutPeriod)
.pollingEvery(pollingInterval, pollingPeriod)
.ignoring(NoSuchElementException.class);
}
特别是我想要理解的两件事;
答案 0 :(得分:2)
他们联系在一起,所以我不会单独回答:
Selenium的FluentWait
方法通常只是等待某个条件成立。您可以为它提供许多不同的可能条件,它将继续对其进行评估,直到它为真或超时值为止,以先到者为准。
a)return
,在大多数编程语言中只是从方法中返回某些。
b)until
是您在FluentWait
上调用的方法,可以让它物理评估条件。之前的一切,只是设置它,使用.until(....)
告诉FluentWait
实例去评估我给你的代码。在你的情况下,我假设方法的名称(实际方法是不完整的),通过调用.until(....)
,你告诉FluentWait
继续尝试从页面抓取一个元素,直到它在物理上可见给用户。
fluentWait
方法仅设置要使用的FluentWait
个实例,而apply/until
代码部分则设置您要评估的条件。在getVisibleElement
方法中,您要返回WebElement
,因此在apply
代码部分中,一旦您对用户可见,您需要返回WebElement
我认为你想在apply
内做什么,是使用普通.findElement
找到元素并检查它的visible
属性。如果是,请返回找到的WebElement
,否则返回null
以强制FluentWait
继续前进。
因此,return fluentWait
仅仅是在说“返回FluentWait
返回的任何内容”。其中,由于该方法已被声明为返回WebElement
实例,因此您说“返回此FluentWait
返回的任何WebElement”。