java.lang.NoSuchMethodError: org.openqa.selenium.support.ui.WebDriverWait.until

java.lang.NoSuchMethodError: org.openqa.selenium.support.ui.WebDriverWait.until

自动测试后发生错误 java.lang.NoSuchMethodError

org.openqa.selenium.support.ui.WebDriverWait.until(Lcom/google/common/base/Function;)Ljava/lang/Object;

环境:

代码:

WebDriverWait alertAwaiter = new WebDriverWait(webDriver, 2);
alertAwaiter.until(ExpectedConditions.alertIsPresent());

执行这段代码的第二行时,出现java.lang.NoSuchMethodError

org.openqa.selenium.support.ui.WebDriverWait.until(Lcom/google/common/base/Function;)Ljava/lang/Object;

无法更改此代码,是否可以使用其他版本的驱动程序或以其他方式执行某些操作?

您需要找到合适版本的 selenium 库并将其放入类路径。现代版本使用 java.util.Function 而不是 com.google.common.base.Function,参见 https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/support/ui/FluentWait.html#until-java.util.function.Function-

因此,如果您无法修改源代码,则需要在应用程序类路径中使用相当旧版本的 Selenium 驱动程序。

尝试降级到 selenium 3.0.12.x。最新的2.53.1版本使用了guava,版本3.0.1似乎是最后一个使用guava的了。