Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
.withTimeout(Duration.ofSeconds(30))
.pollingEvery(Duration.ofMillis(500))
.ignoring(NoSuchElementException.class);
WebElement foo = wait.until(new Function<WebDriver, WebElement>() {
public WebElement apply(WebDriver driver) {
return driver.findElement(By.name("q"));
}
});
试图使用Selenium 3.141.59进行Fluent等待实现,但遇到指定的编译时错误。我主要关注“新功能方法”
我不认为这是重复的。问题听起来似乎相同,但没有一种解决方案对我有用。
显示的错误:
The type Function is not generic; it cannot be parameterized with arguments <WebDriver, WebElement>
答案 0 :(得分:1)
此显式等待实际上是在做什么?
您可以使用预定义的预期条件:
wait.until(ExpectedConditions.presenceOfElementLocated(By.name("q")));
出现问题的原因是您试图创建作为接口的Function的新实例,但您不能这样做。您可以将上述ExpectedCondition重构为:
wait.until(new ExpectedCondition<WebElement>() {
@Override
public WebElement apply(WebDriver driver) {
return driver.findElement(By.name("q"));
}
});
它看起来很接近您的尝试,但是它不是很可读或可重用。我建议您按照自己的预期条件(类似于标准ExpectedConditions class supplied by Selenium)创建自己的帮助器类。