NoSuchMethodError:org.openqa.selenium.os.CommandLine.findExecutable(Ljava / lang / String;)Ljava / lang / String;使用SoapUI启动Chrome时

时间:2018-05-22 10:34:47

标签: google-chrome selenium groovy selenium-chromedriver 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依赖文件

- chromedriver 2.36
- selenium-server-standalone-3.4.0.jar
- selenium-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$1.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中找到正确的解决方案,任何人都可以帮助我解决此问题。

谢谢你 Karunagara Pandi

2 个答案:

答案 0 :(得分:2)

此错误消息......

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;

...意味着当os命令findExecutable()试图根据您的System.setProperty() line找到可执行文件时,引发了 NoSuchMethodError

班级 NoSuchMethodError

NoSuchMethodError扩展IncompatibleClassChangeError并根据 Java Docs ,如果应用程序尝试调用类的指定方法(静态或实例),则抛出它该类不再具有该方法的定义。通常,编译器会捕获此错误,并且如果类的定义发生不兼容更改,则此错误只能在运行时发生。 由于某些类的定义发生更改而发生不兼容的类更改,当前正在执行的方法依赖于此类。

出了什么问题?

您已创建 WebDriver 实例,即驱动程序,并通过 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
  • ChromeDriver 升级到当前ChromeDriver v2.38级别。
  • Chrome 版本保留在 Chrome v66.x 级别。 (as per ChromeDriver v2.38 release notes
  • 通过 IDE 清理您的项目工作区仅使用所需的依赖项重建项目
  • 使用CCleaner工具清除执行测试套件之前和之后的所有操作系统杂务。
  • 如果您的基本 Web客户端版本太旧,请通过Revo Uninstaller将其卸载并安装最新的GA和已发布的 Web客户端版本。
  • 进行系统重启
  • 执行@Test

答案 1 :(得分:0)

初始化chromedriver的代码类似于下面提到的代码

System.setProperty("webdriver.chrome.driver", "C:\\chromedriver_win32\\chromedriver.exe");

        Webdriver driver = new ChromeDriver();

您需要像

一样设置硒的正确依赖项工件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文件,请从此处Authentic link

下载硒jar文件