NoSuchMethodError: org.openqa.selenium.os.CommandLine.findExecutable (Ljava / lang / String;) Ljava / lang / String;при запуске Chrome с использованием SoapUI - PullRequest
0 голосов
/ 22 мая 2018

Я пытаюсь запустить сценарии селена из инструмента 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);

Я сохранил следующий файл зависимостей селена в 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,

Спасибо
Карунагара Панди

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

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

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-файлзатем скачайте файл селеновой банки отсюда Подлинная ссылка

0 голосов
/ 22 мая 2018

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

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 расширяется 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 .
  • Обновление Селен до текущих уровней Версия 3.11.0 .
  • Обновление ChromeDriver до текущей ChromeDriver v2.38 level.
  • Keep Chrome версия на Chrome v66.x ,( согласно примечаниям к выпуску ChromeDriver v2.38 )
  • Очистить ваше Рабочее пространство проекта через IDE и Перестройте ваш проект только с необходимыми зависимостями.
  • Используйте CCleaner , чтобы стереть все рутинные операции ОС до и после выполнения вашего test Suite .
  • Если ваша базовая веб-клиент версия устарела, удалите ее через Revo Uninstaller и установите последнюю версиюGA и выпущенная версия веб-клиента .
  • Возьмите Перезагрузка системы .
  • Выполните @Test.
...