java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;I)V with IE and Selenium through Java

java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;I)V with IE and Selenium through Java

我正在尝试将 selenium 与 sikuli.So sikuli 一起使用 sikuli 不会 运行 使用当前的 java 设置在 64 位上,因此在我的项目中更改了 运行是时候指向 32 位 运行time 环境并使用 32 位 iewebdriver 添加我的 selenium jar 现在我遇到了上面的问题 看看网上的每个地方都添加了 guava.jar 文件 v.21 它没有解决问题,将其更改为番石榴26jre.jar,但这里仍然没有任何工作是我的代码和错误,如果有人能发现我哪里出错了

错误

Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;I)V
at org.openqa.selenium.remote.service.DriverService$Builder.usingPort(DriverService.java:285)
at org.openqa.selenium.ie.InternetExplorerDriver.setupService(InternetExplorerDriver.java:242)
at org.openqa.selenium.ie.InternetExplorerDriver.<init>(InternetExplorerDriver.java:211)
at org.openqa.selenium.ie.InternetExplorerDriver.<init>(InternetExplorerDriver.java:150)
at riOSikuliAutomation.RiOSikuliAutomation.main(RiOSikuliAutomation.java:33)

这是我的代码

DesiredCapabilities cap = DesiredCapabilities.internetExplorer();
cap.setCapability("nativeEvents", false);
cap.setCapability("unexpectedAlertBehaviour", "accept");
cap.setCapability("ignoreProtectedModeSettings", true);
cap.setCapability("disable-popup-blocking", true);
cap.setCapability("enablePersistentHover", true);
cap.setCapability("ignoreZoomSetting", true);
cap.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true);
InternetExplorerOptions options = new InternetExplorerOptions();
options.merge(cap);
System.setProperty("webdriver.ie.driver", "C:\Users\Selenium\IEDriverServer.exe");
WebDriver driver = new InternetExplorerDriver(options);

一读到最后一行就弹出错误,有什么不对的地方请指教?

这个错误信息...

java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;I)V

...意味着 IEDriverServer 无法 initiate/spawn 新的 WebBrowsing Session InternetExplorer 浏览器 会话。

您的主要问题是您使用的二进制文件版本之间不兼容,如下所示:

  • 您提到过使用 guava-21.0-jre.jar 非常 ancient.

解决方案

您的问题的解决方案 either/all 以下步骤:

  • Selenium 升级到当前级别 Version 3.14.0,其中包括 guava-25.0-jre.
  • Guava 升级到 26.0-jre 的当前水平(根据 Selenium v​​3. 14.0 Java 个客户)。

    • Maven依赖如下:

      <!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
      <dependency>
          <groupId>com.google.guava</groupId>
          <artifactId>guava</artifactId>
          <version>26.0-jre</version>
      </dependency>
      
  • 确保您的依赖关系树中没有多个版本。

    • 要通过 Maven 查找现有的番石榴版本,请使用命令:

      mvn dependency:tree | less
      
  • 通过IDE[=65=清理您的项目工作区 ] 和 重建 你的项目只需要依赖项。

  • 如果问题仍然存在,请删除 MAVEN_HOME 目录 .m2 并重新下载 二进制文件