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 v3. 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
并重新下载 二进制文件 。
我正在尝试将 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 v3. 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
并重新下载 二进制文件 。