NoSuchMethodError: org.openqa.selenium.os.CommandLine.findExecutable(Ljava/lang/String;)Ljava/lang/String; while launching Chrome using SoapUI
NoSuchMethodError: org.openqa.selenium.os.CommandLine.findExecutable(Ljava/lang/String;)Ljava/lang/String; while launching Chrome using SoapUI
我正在尝试使用以下启动脚本从 SoapUI 5.2.1 工具启动 selenium 脚本:
System.setProperty("webdriver.chrome.driver","D:\SoapUI-5.2.1\bin\ext\chromedriver.exe")
WebDriver driver = new ChromeDriver();
driver.manage().window().maximize();
driver.get("https://www.MyUrl.com")
driver.manage().timeouts().implicitlyWait(120,TimeUnit.SECONDS);
我在 SoapUI/bin/ext 文件夹中保存了以下 selenium 依赖文件
- chrome驱动程序 2.36
- selenium-server-standalone-3.4.0.jar
- 硒-chrome-driver-2.3.1.jar
但是我在 运行 脚本时收到以下错误消息。
Tue May 22 15:51:47 IST 2018:ERROR:java.lang.NoSuchMethodError: org.openqa.selenium.os.CommandLine.findExecutable(Ljava/lang/String;)Ljava/lang/String;
java.lang.NoSuchMethodError: org.openqa.selenium.os.CommandLine.findExecutable(Ljava/lang/String;)Ljava/lang/String;
at org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:84)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:87)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:77)
at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor(ConstructorSite.java:102)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:57)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:182)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:186)
at Script1.launchURL(Script1.groovy:49)
at Script1.run(Script1.groovy:20)
at com.eviware.soapui.support.scripting.groovy.SoapUIGroovyScriptEngine.run(SoapUIGroovyScriptEngine.java:92)
at com.eviware.soapui.impl.wsdl.teststeps.WsdlGroovyScriptTestStep.run(WsdlGroovyScriptTestStep.java:141)
at com.eviware.soapui.impl.wsdl.panels.teststeps.GroovyScriptStepDesktopPanel$RunAction.run(GroovyScriptStepDesktopPanel.java:250)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
任何人都可以帮助我解决这个问题,因为我无法在 Google 中找到正确的解决方案。
谢谢
卡鲁纳加拉潘迪
这个错误信息...
java.lang.NoSuchMethodError: org.openqa.selenium.os.CommandLine.findExecutable(Ljava/lang/String;)Ljava/lang/String;
java.lang.NoSuchMethodError: org.openqa.selenium.os.CommandLine.findExecutable(Ljava/lang/String;)Ljava/lang/String;
...意味着 NoSuchMethodError 在 os 命令 findExecutable()
试图根据您的 System.setProperty() line
定位可执行文件时引发.
Class NoSuchMethodError
NoSuchMethodError
extends IncompatibleClassChangeError
并且根据 Java 文档 如果应用程序试图调用 class 的指定方法(静态或实例),并且 class 不再具有该方法的定义。通常,此错误会被编译器捕获,并且如果 class 的定义已不兼容地更改,则此错误只会在 运行 时间 发生。 不兼容 class 更改 由于某些 class 的定义发生更改,当前执行的方法依赖于此。
出了什么问题?
您已经创建了 WebDriver 实例,即 driver 并通过 ChromeDriver() 对其进行了转换。但是 SoapUI/bin/ext 子目录包含来自 selenium-server-standalone-3.4.0.jar 和 selenium-chrome-driver-2.3.1.jar.
解决方案
执行以下步骤:
- 从 SoapUI/bin/ext 子中删除 selenium-chrome-driver-2.3.1.jar -目录。
- 将JDK升级到最近的水平JDK 8u171。
- 将 Selenium 升级到当前级别 Version 3.11.0。
- 将Chrome驱动程序升级到当前ChromeDriver v2.38级别。
- 将 Chrome 版本保持在 Chrome v66.x 水平。 (as per ChromeDriver v2.38 release notes)
- 通过 IDE 和 [=40] 清理 您的 项目工作区 =]重建你的项目只需要依赖。
- 使用 CCleaner 工具清除执行 测试套件 .
前后的所有 OS 琐事
- 如果您的基础 Web Client 版本太旧,则通过 Revo Uninstaller 卸载它并安装最新的 GA 和发布版本的 Web Client .
- 系统重启。
- 执行你的
@Test
.
初始化 chromedriver 的代码就像下面提到的代码
System.setProperty("webdriver.chrome.driver", "C:\chromedriver_win32\chromedriver.exe");
Webdriver driver = new ChromeDriver();
您需要像
一样设置正确的 selenium 依赖工件 ID
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.12.0</version>
</dependency>
如果您使用的是 jar 文件,请从此处下载 selenium jar 文件Authentic link
我正在尝试使用以下启动脚本从 SoapUI 5.2.1 工具启动 selenium 脚本:
System.setProperty("webdriver.chrome.driver","D:\SoapUI-5.2.1\bin\ext\chromedriver.exe")
WebDriver driver = new ChromeDriver();
driver.manage().window().maximize();
driver.get("https://www.MyUrl.com")
driver.manage().timeouts().implicitlyWait(120,TimeUnit.SECONDS);
我在 SoapUI/bin/ext 文件夹中保存了以下 selenium 依赖文件
- chrome驱动程序 2.36
- selenium-server-standalone-3.4.0.jar
- 硒-chrome-driver-2.3.1.jar
但是我在 运行 脚本时收到以下错误消息。
Tue May 22 15:51:47 IST 2018:ERROR:java.lang.NoSuchMethodError: org.openqa.selenium.os.CommandLine.findExecutable(Ljava/lang/String;)Ljava/lang/String;
java.lang.NoSuchMethodError: org.openqa.selenium.os.CommandLine.findExecutable(Ljava/lang/String;)Ljava/lang/String;
at org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:84)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:87)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:77)
at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor(ConstructorSite.java:102)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:57)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:182)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:186)
at Script1.launchURL(Script1.groovy:49)
at Script1.run(Script1.groovy:20)
at com.eviware.soapui.support.scripting.groovy.SoapUIGroovyScriptEngine.run(SoapUIGroovyScriptEngine.java:92)
at com.eviware.soapui.impl.wsdl.teststeps.WsdlGroovyScriptTestStep.run(WsdlGroovyScriptTestStep.java:141)
at com.eviware.soapui.impl.wsdl.panels.teststeps.GroovyScriptStepDesktopPanel$RunAction.run(GroovyScriptStepDesktopPanel.java:250)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
任何人都可以帮助我解决这个问题,因为我无法在 Google 中找到正确的解决方案。
谢谢
卡鲁纳加拉潘迪
这个错误信息...
java.lang.NoSuchMethodError: org.openqa.selenium.os.CommandLine.findExecutable(Ljava/lang/String;)Ljava/lang/String;
java.lang.NoSuchMethodError: org.openqa.selenium.os.CommandLine.findExecutable(Ljava/lang/String;)Ljava/lang/String;
...意味着 NoSuchMethodError 在 os 命令 findExecutable()
试图根据您的 System.setProperty() line
定位可执行文件时引发.
Class NoSuchMethodError
NoSuchMethodError
extends IncompatibleClassChangeError
并且根据 Java 文档 如果应用程序试图调用 class 的指定方法(静态或实例),并且 class 不再具有该方法的定义。通常,此错误会被编译器捕获,并且如果 class 的定义已不兼容地更改,则此错误只会在 运行 时间 发生。 不兼容 class 更改 由于某些 class 的定义发生更改,当前执行的方法依赖于此。
出了什么问题?
您已经创建了 WebDriver 实例,即 driver 并通过 ChromeDriver() 对其进行了转换。但是 SoapUI/bin/ext 子目录包含来自 selenium-server-standalone-3.4.0.jar 和 selenium-chrome-driver-2.3.1.jar.
解决方案
执行以下步骤:
- 从 SoapUI/bin/ext 子中删除 selenium-chrome-driver-2.3.1.jar -目录。
- 将JDK升级到最近的水平JDK 8u171。
- 将 Selenium 升级到当前级别 Version 3.11.0。
- 将Chrome驱动程序升级到当前ChromeDriver v2.38级别。
- 将 Chrome 版本保持在 Chrome v66.x 水平。 (as per ChromeDriver v2.38 release notes)
- 通过 IDE 和 [=40] 清理 您的 项目工作区 =]重建你的项目只需要依赖。
- 使用 CCleaner 工具清除执行 测试套件 . 前后的所有 OS 琐事
- 如果您的基础 Web Client 版本太旧,则通过 Revo Uninstaller 卸载它并安装最新的 GA 和发布版本的 Web Client .
- 系统重启。
- 执行你的
@Test
.
初始化 chromedriver 的代码就像下面提到的代码
System.setProperty("webdriver.chrome.driver", "C:\chromedriver_win32\chromedriver.exe");
Webdriver driver = new ChromeDriver();
您需要像
一样设置正确的 selenium 依赖工件 ID<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.12.0</version>
</dependency>
如果您使用的是 jar 文件,请从此处下载 selenium jar 文件Authentic link