NoSuchMethodError: org.openqa.selenium.os.CommandLine.findExecutable (Ljava / lang / String;) Ljava / lang / String; при запуске Chrome с помощью SoapUI

Karunagara спросил: 28 апреля 2018 в 08:54 в: google-chrome

Я пытаюсь запустить скрипты selenium из инструмента SoapUI 5.2.1 со следующим сценарием запуска:

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);

Я сохранил следующий файл зависимости selenium в SoapUI / bin / ext

- 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 ответа

Есть решение
DebanjanB ответил: 28 апреля 2018 в 04:14

Это сообщение об ошибке ...

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.

Класс NoSuchMethodError

NoSuchMethodError extends IncompatibleClassChangeError и в соответствии с Java Docs он выдается, если приложение пытается вызвать указанный метод класс (либо статический, либо экземпляр), и этот класс больше не имеет определения этого метода. Обычно эта ошибка улавливается компилятором, и эта ошибка может возникать только в время выполнения , если определение класса несовместимо изменилось. Несовместимое изменение класса происходит из-за изменения определения некоторого класса, от которого зависит текущий исполняемый метод.

Что пошло не так?

Вы создали WebDriver , т. е. драйвер , и выложил его через ChromeDriver () . Но подкаталог SoapUI / bin / ext содержит несколько отличий от selenium-server-standalone-3.4.0.jar и selenium-chrome-driver-2.3 .1.jar.

Решение

Выполните следующие шаги:

  • Удалить selenium-chrome-driver-2.3 .1.jar из подкаталога SoapUI / bin / ext.
  • Обновление JDK до последних уровней JDK 8u171.
  • Upgrade Selenium для текущих уровней Версия 3.11.0.
  • Обновление ChromeDriver на текущий уровень ChromeDriver v2.38.
  • Сохраните версию Chrome на Chrome v66.x уровней. (в соответствии с примечаниями к выпуску ChromeDriver v2.38)
  • Очистите свое Рабочее пространство проекта через IDE и Перестроить только с требуемыми зависимостями.
  • Используйте инструмент CCleaner , чтобы стереть все операции с ОС до и после выполнения тестового пакета .
  • Если ваша базовая версия Web Client слишком старая, а затем удалите ее с помощью Revo Uninstaller и установите последнюю версию GA и выпущенную версию Веб-клиент .
  • Возьмите Перезагрузка системы .
  • Выполните @Test.
  • уль>
Karunagara ответил: 28 апреля 2018 в 11:57
Привет, Дебаджан, Спасибо за ответ. Я попробую эти шаги ... :)
Remember Why You Started ответил: 11 июня 2018 в 07:09

Код для инициализации хронографа похож на приведенный ниже код

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

Вам нужно установить правильный идентификатор артефакта зависимостей селена, например

<!-- 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 отсюда. Аутентичная ссылка