java.lang.NoSuchMethodError:com.google.common.base.Preconditions.checkArgument(ZLjava / lang / String; I)V与IE和Selenium通过Java

时间:2018-08-15 09:53:30

标签: java selenium selenium-webdriver webdriver guava

我正在尝试将sikuli与sikuli一起使用,因此sikuli无法使用当前的Java设置在64位上运行,因此在我的项目中将运行时更改为指向32位运行时环境,并使用32位添加了我的硒罐位iewebdriver现在我对上面有问题在网上的每个地方都添加了guava.jar文件v.21,它没有解决问题,但更改为guava 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);

读取错误的最后一行后,我没有正确执行任何操作,请告知?

my dependencies

1 个答案:

答案 0 :(得分:-1)

此错误消息...

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

...表示 IEDriverServer 无法启动/产生新的 WebBrowsing会话,即 InternetExplorer Browser 会话。

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

  • 您提到过使用古代的 guava-21.0-jre.jar

解决方案

您的问题的解决方案将是以下所有步骤之一或全部:

  • 升级到当前级别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
  • 清理您的项目工作区重建您的项目,并且仅具有必需的依赖项。

  • 如果问题仍然存在,请删除MAVEN_HOME目录.m2,然后重新下载 binaries