我正在使用带有Java绑定的WebDriver。我正在使用通用方法进行元素等待。其中一个叫做waitByPageTitle。
以下是我对此方法的定义:
public void waitByPageTitle(WebDriver driver, String pageTitle) {
WebDriverWait wait = new WebDriverWait(driver, DEFAULT_IMPLICIT_WAIT);
try {
wait.until(ExpectedConditions.titleContains(pageTitle));
} catch (TimeoutException e) {
...
}
}
在我的页面对象中,当一个方法需要按页面标题等待时,我会将参数传递给此方法。但是有些情况下页面标题可能因不同的事件而有所不同。 如何更改通用的waitByPageTitle方法,使其接受多个参数,并且可以等待它们看到第一个参数的任何一个参数?
感谢。
答案 0 :(得分:1)
您可以使用FluentWait和Java varargs
// This method will accept any number of titles
public void waitUntilTextChanges(WebDriver driver, String... titles) {
new FluentWait<WebDriver>(driver)
.withTimeout(60, TimeUnit.SECONDS)
.pollingEvery(10, TimeUnit.MILLISECONDS)
.until(new Predicate<WebDriver>() {
public boolean apply(WebDriver d) {
boolean titleMatched = false;
// Get current window title
String windowTitle = driver.getTitle();
for(String title : titles){
// Iterate through all input titles and compare with window title
titleMatched = windowTitle.equalsIgnoreCase(title);
// If match found, exit
if(titleMatched){
break;
}
}
return titleMatched;
}
});
}