Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Selenium Grid. Chrome запускается локально, но не запускается на виртуалке


(Алексей Павлов) #1

Добрый день.
Проблема следующая:
Имею настроечный конфиг JSON для селениум грида следующего содержания:
{
“capabilities”:
[
{
“browserName”: “chrome”,
“maxInstances”: 7,
“platform”: “LINUX”,
“chrome_binary”: “/home/vnc/Downloads/chromedriver”
},
],
“nodeTimeout”:300000,
“hub”:“IP_хаба:4444”,
“nodePolling”:2000,
“registerCycle”:5000,
“maxSession”: 1,
“register”:true,
“cleanUpCycle”:3000000,
“timeout”:300000,
“maxSession”:1
}

При этом нода стартует на локальной машине с ним замечательно и хром работает успешно (путь только меняю к chrome_binary). При этом на виртуалке тот же самый конфиг с той же версией стандалон сервера выдает следующую ошибку при запуске тестов:

В консоли IDEA IDE (при запуске автотестов):
org.openqa.selenium.remote.SessionNotFoundException: no such session
(Driver info: chromedriver=2.27.440175 (9bc1d90b8bfa4dd181fbbf769a5eb5e575574320),platform=Linux 3.10.0-514.2.2.el7.x86_64 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 14 milliseconds

В консоли самой запущенной ноды на виртуалке:
16:25:46.986 INFO - SessionCleaner initialized with insideBrowserTimeout 0 and clientGoneTimeout 300000000 polling every 30000000
16:25:46.999 INFO - Executing: [new session: Capabilities [{browserName=chrome, version=, platform=LINUX}]])
16:25:47.007 INFO - Creating a new session for Capabilities [{browserName=chrome, version=, platform=LINUX}]
Starting ChromeDriver 2.27.440175 (9bc1d90b8bfa4dd181fbbf769a5eb5e575574320) on port 12910
Only local connections are allowed.
16:25:47.070 INFO - Attempting bi-dialect session, assuming Postel’s Law holds true on the remote end
16:25:47.081 INFO - Detected dialect: OSS
16:25:47.099 INFO - Done: [new session: Capabilities [{browserName=chrome, version=, platform=LINUX}]]
16:25:47.203 INFO - Executing: [maximise window])
16:25:47.225 WARN - Exception thrown
org.openqa.selenium.NoSuchSessionException: no such session
(Driver info: chromedriver=2.27.440175 (9bc1d90b8bfa4dd181fbbf769a5eb5e575574320),platform=Linux 3.10.0-514.2.2.el7.x86_64 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 14 milliseconds
Build info: version: ‘3.0.1’, revision: ‘1969d75’, time: ‘2016-10-18 09:48:19 -0700’
System info: host: ‘gisrd-ci-selenium’, ip: ‘172.29.24.33’, os.name: ‘Linux’, os.arch: ‘amd64’, os.version: ‘3.10.0-514.2.2.el7.x86_64’, java.version: ‘1.8.0_121’
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities [{message=unknown error: cannot find Chrome binary
(Driver info: chromedriver=2.27.440175 (9bc1d90b8bfa4dd181fbbf769a5eb5e575574320),platform=Linux 3.10.0-514.2.2.el7.x86_64 x86_64), platform=ANY}]
Session ID: 46e7d5a1583ce4421b7e443c5daf5614
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:423)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:216)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:168)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:635)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:658)
at org.openqa.selenium.remote.RemoteWebDriver$RemoteWebDriverOptions$RemoteWindow.maximize(RemoteWebDriver.java:882)
at org.openqa.selenium.support.events.EventFiringWebDriver$EventFiringWindow.maximize(EventFiringWebDriver.java:640)
at org.openqa.selenium.remote.server.handler.MaximizeWindow.call(MaximizeWindow.java:30)
at org.openqa.selenium.remote.server.handler.MaximizeWindow.call(MaximizeWindow.java:22)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at org.openqa.selenium.remote.server.DefaultSession$1.run(DefaultSession.java:176)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
16:25:47.228 WARN - Exception: no such session
(Driver info: chromedriver=2.27.440175 (9bc1d90b8bfa4dd181fbbf769a5eb5e575574320),platform=Linux 3.10.0-514.2.2.el7.x86_64 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 14 milliseconds
Build info: version: ‘3.0.1’, revision: ‘1969d75’, time: ‘2016-10-18 09:48:19 -0700’
System info: host: ‘gisrd-ci-selenium’, ip: ‘172.29.24.33’, os.name: ‘Linux’, os.arch: ‘amd64’, os.version: ‘3.10.0-514.2.2.el7.x86_64’, java.version: ‘1.8.0_121’
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities [{message=unknown error: cannot find Chrome binary
(Driver info: chromedriver=2.27.440175 (9bc1d90b8bfa4dd181fbbf769a5eb5e575574320),platform=Linux 3.10.0-514.2.2.el7.x86_64 x86_64), platform=ANY}]
Session ID: 46e7d5a1583ce4421b7e443c5daf5614

Путь к хрому прописан правильно, для верности даже клал копию в /usr/bin/ и пробовал этот путь, все равно та же ошибка. В чём проблема?


(Vasiliy Rakshin) #2

Он не может найти Хром, не драйвер, а Хром.


(Алексей Павлов) #3

Так мне нужно именно мой хромдрайвер, а не хром. Локально-то он его ищет по указанному пути.
Как можно использовать именно свой хромдрайвер?


(Vasiliy Rakshin) #4

Ещё раз - драйвер он нашел и запустил. Драйвер ищет хром - и не находит - об этом сообщение об ошибке. Хром установлен в нестандартное место значит. копайте как указать местоположение бина хрома.


(Алексей Павлов) #5

Как раз с этим траблы - не могу найти официальных доков по параметрам JSON для разных версий стандалон-сервера, те доки что находил на гитхабе самого грида - не описывают параметры для путей, а те, что пробовал с поисковиков и форумов в интернете - не помогают (chrome_binary, binary, chromeOptions:{binary}, webdriver.chrome.driver) поэтому и обратился на этот форум, может кто укажет на расположение доков с параметрами, актуальными для версии стандалонсервера или знает какие параметры можно использовать для версии 3.0.1


(Vasiliy Rakshin) #6

https://github.com/SeleniumHQ/selenium/wiki здесь находим документ https://github.com/SeleniumHQ/selenium/wiki/JsonWireProtocol из которого узнаём что надо использовать https://sites.google.com/a/chromium.org/chromedriver/capabilities а отсюда искомые параметры для раздела capabilities - это binary - путь к Хрому,


(Алексей Павлов) #7

binary использовал тоже, но почему-то не работает. Вышеприведённая ошибка из консоли присутствует.
За доки спасибо, посмотрю.