java.lang.NoSuchMethodError:org.openqa.selenium.support.ui.Wait.until(Lcom / google / common / base / Function;)使用selenium-server-standalone-3.12.0

问题描述 投票:0回答:2
我一直在努力解决硒问题:

java.lang.NoSuchMethodError: org.openqa.selenium.support.ui.Wait.until(Lcom/google/common/base/Function;)Ljava/lang/Object;

这是我收到此错误的地方:

Wait<WebDriver> wait = new FluentWait<>(getDriverInstance()) .withTimeout(timeout, TimeUnit.SECONDS) .pollingEvery(frequency, TimeUnit.SECONDS) .ignoring(NoSuchElementException.class); wait.until(driver -> { assert driver != null; elt.click(); return true; });

Internet上大多数解决方案建议使用Guava 21,但这对我不起作用。

在本地运行selenium效果很好,但我没有得到这个问题,问题是我们使用了运行器,该运行器将使用selenium-server-standalone-3.12.0在多个虚拟机上运行测试,并且在类路径中定义了所有依赖项使用,在我也声明了番石榴的地方,我也尝试了其他版本的Guava从19到23。

我尝试了多种解决方案,但现在我没主意了,即使声明了Guava,我也不知道为什么仍然会收到此错误,并且可以清楚地看到在本地运行测试时,Guava 23效果很好。

我正在使用Java 1.8_71

当我检查selenium-server-standalone-3.12.0的代码源时,等待界面如下所示:

import java.util.function.Function; public interface Wait<F> { <T> T until(Function<? super F, T> var1); }

但是在本地看起来像这样:

import com.google.common.base.Function; public interface Wait<F> { <T> T until(Function<? super F, T> var1); }

但是由于com.google.common.base.Function在Guava 23中扩展了com.google.common.base.Function,所以这应该不是问题,所以为什么我仍然会收到此错误?

提前感谢。

selenium java-8 guava webdriverwait selenium-server
2个回答
0
投票
这是兼容性问题。要解决此问题,您可以使用

Guava版本21 +硒版本3.2.0 + JDK 8。

有关更多详细信息,请检查以下链接:

https://softwaretestingboard.com/q2a/1907/function-webdriver-fluentwait-webdriver-applicable-arguments#axzz68BFzmEjv

希望对您有帮助。


0
投票
此错误消息...

java.lang.NoSuchMethodError: org.openqa.selenium.support.ui.Wait.until(Lcom/google/common/base/Function;)Ljava/lang/Object;

...表示

Guava版本不兼容。


根据

selenium-java-3.12.0

客户端工具包的内容,您正在使用selenium-server-standalone-3.12.0,支持的版本是:

guava-23.6-jre


解决方案

立即的解决方案是:

  • guava-23.6-jre.jar] [>升级Guava

其他注意事项

另外,

    您的
  • JDK版本是1.8_71,这很漂亮oldancient
解决方案:确保将
  • JDK
  • 升级到当前级别JDK 8u222
    最佳做法

    根据最佳实践,您需要:

    升级
  • 到当前水平Version 3.141.59
  • GeckoDriver
  • Firefox特定:
      升级
    • GeckoDriver
    GeckoDriver v0.26.0等级。
    GeckoDriver存在于所需位置。
  • GeckoDriver具有非root用户的可执行权限。
  • Firefox
  • 版本升级到Firefox v72.0级别。
  • ChromeDriver
  • Chrome特定:
    • ChromeDriver
    已更新为当前的ChromeDriver v79.0.3945.36级别。
  • Chrome
  • 已更新为当前的Chrome 79.0级。 (根据ChromeDriver v79.0 release notes
  • Clean
  • 您的Project Workspace通过您的IDERebuild您的项目仅具有必需的依赖项。
  • 仅限于[WindowsOS
  • )在执行[[Test Suite
    之前和之后,使用CCleaner工具清除所有操作系统杂项。仅适用于LinuxOS)在执行[[Test Suite之前和之后Free Up and Release the Unused/Cached Memory in Ubuntu/Linux Mint
  • 如果您的基本Web Client
  • 版本太旧,请通过Revo Uninstaller卸载它,并安装最新的GA和Web Client的发行版本。
  • 进行系统重启
  • 以非root用户身份执行Test。>>
  • 总是在driver.quit()方法中调用tearDown(){}以正常关闭并销毁WebDriver
  • Web Client
  • 实例。
  • 参考
  • 您可以在以下位置找到相关的详细讨论:

    org.openqa.selenium.remote.service.DriverService$Builder.createArgs()Lcom/google/common/collect/ImmutableList; with Selenium 3.5.3 Chrome 76

    © www.soinside.com 2019 - 2024. All rights reserved.