Невозможно создать новый сервис: ChromeDriverService при запуске GRID через SSH, но работает нормально, когда GRID создан непосредственно на хосте - PullRequest
0 голосов
/ 20 сентября 2018

Для наших нужд тестирования / выполнения у нас есть виртуальная машина Windows Server 2012 R2, где у нас есть .bat сценарии для настройки Selenium Enterprise Grid Hub и узла Chrome.

Теперь, когда я настроил Grid и Node с помощью этих сценариев, напрямую войдя в виртуальную машину, выполнение теста продолжается как обычно.Однако, если я выполняю настройку, вызывая одни и те же пакетные сценарии удаленно с помощью вызова SSH, я получаю следующее:

org.openqa.selenium.SessionNotCreatedException: Unable to create new service: ChromeDriverService
Build info: version: '3.13.0', revision: '2f0d292', time: '2018-06-25T15:32:19.891Z'
System info: host: 'TWV-BWN-A002', ip:, os.name: 'Windows Server 2012 R2', os.arch: 'amd64', os.version: '6.3', java.version: '1.8.0_181'
Driver info: driver.version: unknown
Command duration or timeout: 212 milliseconds
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:214)
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:166)
    at org.openqa.selenium.remote.JsonWireProtocolResponse.lambda$new$0(JsonWireProtocolResponse.java:53)
    at org.openqa.selenium.remote.JsonWireProtocolResponse.lambda$getResponseFunction$2(JsonWireProtocolResponse.java:91)
    at org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$0(ProtocolHandshake.java:123)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.Spliterators$ArraySpliterator.tryAdvance(Spliterators.java:958)
    at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126)
    at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:498)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
    at java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:152)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:464)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:126)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:73)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:138)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:601)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:219)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:142)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:155)
    at com.fanniemae.lai.testauto.selenium.utils.WebConnector.getRemoteChromeDriver(WebConnector.java:74)
    at com.fanniemae.lai.testauto.selenium.alteryx.AlteryxStepDefinition.setup(AlteryxStepDefinition.java:46)

Я использую selenium-server-standalone-3.13.0 вместе с версией chromedriver2.38 и Chrome 69.

То, что я пытался сделать до сих пор, это добавление местоположения двоичного файла chromedriver.exe в систему PATH.Также добавлена ​​системная переменная среды webdriver.chrome.driver для хранения ее местоположения.

При запуске GRID либо путем прямого входа в виртуальную машину, либо с помощью SSH-удаленного вызова сценариев, я могуt получить доступ к ip: порт / сетка / консоль успешно.Следовательно, на данный момент я не могу понять, в чем может быть проблема.кто-нибудь сталкивался с чем-то подобным?

Ответы [ 2 ]

0 голосов
/ 21 сентября 2018

Несмотря на наличие двоичного файла Chromedriver.exe на пути, а также в качестве системной переменной среды, я пошел дальше и передал его вместе с абсолютным путем в качестве параметра для автономного сервера jar и альта Селена!Это сработало!

java -Dwebdriver.chrome.driver = C: /full/path/to/chromedriver.exe -jar C: /full/path/to/selenium-server-standalone-3.13.0.jar -role узел -hub http://ip:port/grid/register -browser "browserName = chrome, version = ANY, maxInstances = 10, platform = WINDOWS"

0 голосов
/ 21 сентября 2018

В соответствии с конфигурацией, которую вы указали в своем вопросе, вы используете:

  • selenium-server-standalone-3.13.0
  • ChromeDriver версия 2.38
  • Chrome v69.x

Ваша главная проблема - несовместимость между версиями двоичных файлов, которые вы используете, следующим образом:

  • Вы используете *Хромированный драйвер 1016 * = 2,38
  • В примечаниях к выпуску Хромированный драйвер = 2,38 четко упоминается следующее:

Поддержка Chrome v65-67

  • Вы используете хром = 69,0
  • Примечания к выпуску ChromeDriverv2.42 ясно упоминает следующее:

Поддержка Chrome v68-70

Таким образом, естьявное несоответствие между ChromeDriver v2.38 и Chrome Browser v69.0

Solution

...