函数类型不是泛型的;它不能用参数<WebDriver,WebElement>参数化


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 等待实现,但收到指定的编译时错误。我主要关注"新功能方法">

FluentWait

类型不是通用的;它不能用参数 参数化,这是通过 Selenium 和 Java 的 FluentWait 类的错误

我不相信这是重复的。问题可能听起来相同,但没有一个解决方案对我有用。

显示错误:

The type Function is not generic; it cannot be parameterized with arguments <WebDriver, WebElement>

你实际上想用这种明确的等待做什么?

您可以使用预定义的预期条件:

wait.until(ExpectedConditions.presenceOfElementLocated(By.name("q")));

遇到问题的原因是您正在尝试创建一个函数的新实例,该实例是一个接口,您无法这样做。 您可以将上述预期条件重构为:

wait.until(new ExpectedCondition<WebElement>() {
    @Override
    public WebElement apply(WebDriver driver) {
        return driver.findElement(By.name("q"));
    }
});

它看起来与您的尝试非常接近,但它的可读性或可重用性不是很高。 我建议您使用自己的预期条件创建自己的辅助类,该类看起来像Selenium提供的标准预期条件类。

相关内容

  • 没有找到相关文章

最新更新