我正在尝试在Selenium Java自动化中使用FluentWait。
当我使用until方法时,我收到以下错误 方法直到(Wait类型中的函数不适用于参数(new Function(){}
public WebElement fluentWaitForElement() {
Wait<WebDriver> fluentWait = new FluentWait<WebDriver>(driver)
.withTimeout(30, TimeUnit.SECONDS)
.pollingEvery(5, TimeUnit.SECONDS)
.ignoring(NoSuchElementException.class);
WebElement waitingElement = fluentWait.until(new Function<WebDriver, WebElement>() {
public WebElement apply(WebDriver driver) {
return driver.findElement(By.id("ButtonID"));
}
}
);
}
我也在另一篇文章中试过这个解决方案。但是,我仍然得到同样的错误
fluentWaitwait.until(new Function<WebDriver, Boolean>() {
@Override public Boolean apply(WebDriver driver) {
return driver.findElement(By.ID("ButtonID"));
}
}
);
有谁知道如何解决这个问题?感谢
答案 0 :(得分:0)
你真的不必使用new Function<WebDriver, Boolean>()
。
您可以使用ExpectedCondtion<T>
或使用extends Function<WebDriver, T>;
的{{1}}课程。
预期条件:
lambda expression
Lambda Expression:
.until(new ExpectedCondition<Boolean>() {
@Override
public Boolean apply(WebDriver driver) {
//return Boolean value
return null;
}
});
附加&#34;缺陷&#34;在你的代码中是:
.until(driver -> {
return null;
//return any type parameter you want. Lambda Expression takes care of what type you return
}
Wait<WebDriver> fluentWait = new FluentWait<WebDriver>(driver)
.withTimeout(30, TimeUnit.SECONDS)
.pollingEvery(5, TimeUnit.SECONDS)
.ignoring(NoSuchElementException.class);
无法使用Wait
进行参数化,因为它不是通用的。将其更改为WebDriver