Драйвер Selenium: -Dwebdriver.driver=iexplorer вызывает сафари

Когда я пытаюсь запустить автоматизацию тестирования Serenity, я вызываю следующую команду maven:

mvn clean verify -Dentry_point="**/*SmokeTestSuite.java" -Dwebdriver.driver="iexplorer" -Dwebdriver.ie.driver="<my path>\IEDriverServer.exe"

Я предоставил iexplorer в качестве драйвера и путь к IEDriverServer.exe. Моя версия Internet Explorer 11.x. Выдает ошибку, что мне нужно добавить путь к safari.exe, когда я запускаю драйвер ie.

Ниже приведена трассировка стека ошибок:

[pool-1-thread-1] ERROR net.thucydides.core.webdriver.WebDriverFacade - FAILED TO CREATE NEW WEBDRIVER_DRIVER INSTANCE class org.openqa.selenium.ie.InternetExplorerDriver: Could not instantiate class org.openqa.selenium.ie.InternetExplorerDriver
net.thucydides.core.webdriver.UnsupportedDriverException: Could not instantiate class org.openqa.selenium.ie.InternetExplorerDriver
    at net.thucydides.core.webdriver.WebDriverFactory.newWebdriverInstance(WebDriverFactory.java:128)
    at net.thucydides.core.webdriver.WebDriverFacade.newDriverInstance(WebDriverFacade.java:142)
    at net.thucydides.core.webdriver.WebDriverFacade.newProxyDriver(WebDriverFacade.java:133)
    at net.thucydides.core.webdriver.WebDriverFacade.getProxiedDriver(WebDriverFacade.java:103)
    at net.thucydides.core.webdriver.WebDriverFacade.getTitle(WebDriverFacade.java:213)
    at net.serenitybdd.jbehave.SerenityReporter.managedDriverIsNotAlive(SerenityReporter.java:215)
    at net.serenitybdd.jbehave.SerenityReporter.beforeScenario(SerenityReporter.java:188)
    at org.jbehave.core.reporters.DelegatingStoryReporter.beforeScenario(DelegatingStoryReporter.java:55)
    at org.jbehave.core.reporters.ConcurrentStoryReporter.beforeScenario(ConcurrentStoryReporter.java:158)
    at org.jbehave.core.embedder.PerformableTree$PerformableScenario.perform(PerformableTree.java:877)
    at org.jbehave.core.embedder.PerformableTree$PerformableStory.performScenarios(PerformableTree.java:811)
    at org.jbehave.core.embedder.PerformableTree$PerformableStory.perform(PerformableTree.java:784)
    at org.jbehave.core.embedder.PerformableTree.performCancellable(PerformableTree.java:416)
    at org.jbehave.core.embedder.PerformableTree.perform(PerformableTree.java:387)
    at org.jbehave.core.embedder.StoryManager$EnqueuedStory.call(StoryManager.java:291)
    at org.jbehave.core.embedder.StoryManager$EnqueuedStory.call(StoryManager.java:265)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)at java.lang.Thread.run(Thread.java:748) .                                
Caused by: java.lang.RuntimeException: Safari could not be found in the path!
Please add the directory containing ''Safari.exe'' to your PATH environment
variable, or explicitly specify a path to Safari like this:
*safari c:\blah\Safari.exe
    at org.openqa.selenium.browserlaunchers.locators.SingleBrowserLocator.findBrowserLocationOrFail(SingleBrowserLocator.java:42)
    at org.openqa.selenium.safari.SafariDriverCommandExecutor.start(SafariDriverCommandExecutor.java:100)
    at org.openqa.selenium.safari.SafariDriver.startClient(SafariDriver.java:76)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:119)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:144)
    at org.openqa.selenium.safari.SafariDriver.<init>(SafariDriver.java:62)
    at org.openqa.selenium.safari.SafariDriver.<init>(SafariDriver.java:53)
    at net.thucydides.core.webdriver.strategies.InternetExplorerDriverBuilder.newInstance(InternetExplorerDriverBuilder.java:30)
    at net.thucydides.core.webdriver.WebDriverFactory.newWebdriverInstance(WebDriverFactory.java:116)
    ... 19 more

person user3053729    schedule 11.05.2018    source источник


Ответы (2)


webdriver.driver — это правильное свойство Serenity для установки драйвера. Я не уверен, что DebajanB имеет в виду под "подверженным ошибкам" - как правило, он работает или нет, а если нет, то это проблема конфигурации. Чтобы убедиться, что свойство драйвера правильно настроено в Maven (вам может потребоваться передать его в свои тесты как системное свойство в плагине surefire или failsafe), посмотрите, работает ли оно с firefox.

Ссылки на webdriver.gecko.driver и т. д. сообщают Serenity, где найти двоичный файл для конкретного драйвера, но не сообщают Serenity, какой драйвер использовать. Вы можете настроить несколько двоичных файлов драйвера, а затем выбрать один из них для использования с webdriver.driver.

Safari не является драйвером по умолчанию для Serenity, в отличие от Firefox, поэтому ссылка на Safari любопытна. Это может быть дефект/вводящее в заблуждение сообщение об ошибке из старой версии. Вы используете последнюю версию Serenity?

person John Smart    schedule 13.05.2018
comment
Я установил ‹webdriver.driver›iexplorer‹/webdriver.driver› в отказоустойчивом плагине, но он дает ту же ошибку. Прямо сейчас я использую безмятежность версии 1.1.39, это довольно старая версия, которая может быть причиной вводящей в заблуждение ошибки, как вы предложили. - person user3053729; 15.05.2018
comment
обновление безмятежности до 1.2.2 решило вышеуказанную проблему. Но теперь Internet Explorer продолжает отправлять сообщения. Это начальная страница для сервера WebDriver. - person user3053729; 15.05.2018

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

ERROR net.thucydides.core.webdriver.WebDriverFacade - FAILED TO CREATE NEW WEBDRIVER_DRIVER INSTANCE class org.openqa.selenium.ie.InternetExplorerDriver: Could not instantiate class org.openqa.selenium.ie.InternetExplorerDriver
net.thucydides.core.webdriver.UnsupportedDriverException: Could not instantiate class org.openqa.selenium.ie.InternetExplorerDriver

...подразумевается, что программе не удалось создать/породить желаемый новый экземпляр InternetExplorerDriver.

Основной причиной этой ошибки является подверженная ошибкам команда maven, которую вы использовали для выполнения Serenity Test Automation Suite, которая выглядит следующим образом:

mvn clean verify -Dentry_point="**/*SmokeTestSuite.java" -Dwebdriver.driver="iexplorer" -Dwebdriver.ie.driver="<my path>\IEDriverServer.exe"

Наиболее часто используемые варианты WebDriver:

  • -Dwebdriver.gecko.driver — для geckodriver.exe
  • -Dwebdriver.chrome.driver — для chromedriver.exe
  • -Dwebdriver.ie.driver — для IEDriverServer.exe

Но поскольку вы использовали неверный аргумент в качестве -Dwebdriver.driver вместе с неверным значением в качестве iexplorer, Serenity Test Automation Framework пытается получить доступ к конфигурации по умолчанию Safari.exe.

Решение

Вам нужно удалить аргумент подвержен ошибкам -Dwebdriver.driver="iexplorer", и все будет готово.

person DebanjanB    schedule 11.05.2018
comment
Я попытался удалить его, затем по умолчанию используется браузер Firefox. - person user3053729; 15.05.2018