#java #selenium #phantomjs
#google-chrome #селен #заводной #selenium-chromedriver #soapui
Вопрос:
Я пытаюсь запустить сценарии 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.
Спасибо
Карунагара Панди
Ответ №1:
Это сообщение об ошибке…
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 была вызвана, когда команда операционной findExecutable()
системы попыталась найти исполняемый файл в соответствии с вашим System.setProperty() line
.
Класс NoSuchMethodError
NoSuchMethodError
расширяется IncompatibleClassChangeError
и, согласно документам Java, выдается, если приложение пытается вызвать указанный метод класса (статический или экземпляр), и у этого класса больше нет определения этого метода. Обычно эта ошибка перехватывается компилятором, и эта ошибка может возникнуть только во время выполнения, если определение класса несовместимо изменилось. Несовместимое изменение класса происходит из-за изменения определения некоторого класса, от которого зависит текущий выполняемый метод.
Что пошло не так?
Вы создали экземпляр 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.
- Обновите Selenium до текущих уровней версии 3.11.0.
- Обновите ChromeDriver до текущего уровня ChromeDriver версии 2.38.
- Сохраняйте версию Chrome на уровне Chrome v66.x. (согласно примечаниям к выпуску ChromeDriver версии v2.38)
- Очистите рабочее пространство вашего проекта с помощью IDE и перестройте свой проект только с необходимыми зависимостями.
- Используйте инструмент CCleaner, чтобы стереть все проблемы с операционной системой до и после выполнения вашего набора тестов.
- Если ваша базовая версия веб-клиента слишком старая, удалите ее с помощью программы удаления Revo и установите последнюю стандартную и выпущенную версию веб-клиента.
- Перезагрузите систему.
- Выполнить ваш
@Test
.
Комментарии:
1. Привет, Дебаньян, спасибо за ответ.. Я попробую выполнить эти шаги … 🙂
Ответ №2:
Код для инициализации chromedriver аналогичен приведенному ниже коду
System.setProperty("webdriver.chrome.driver", "C:\chromedriver_win32\chromedriver.exe");
Webdriver driver = new ChromeDriver();
Вам нужно установить правильный идентификатор артефакта зависимости для selenium, например
<!-- 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 по этой аутентичной ссылке