WebDriverException при запуске Selenium Grid через ssh

Добрый день!

Я использую Selenide + Cucumber + Maven + Junit + Jenkins + Allure.
Тесты гоняются c job’ы Jenkins на виртуальной машине Ubuntu в несколько потоков.
Для этого на Ubuntu в ручную из консоли я запускаю хаб и несколько нод selenium grid’а.
Возникла необходимость запускать грид из job’ы перед стартом тестов.
Нашлось решение делать это в preSteps через ssh.
Но проблема в том, что если стартовать хаб и ноды через ssh, почему-то не запускается браузер.
При инициализации драйвера выходила ошибка
Driver info: driver.version: unknown
Драйвер лежал в той же папке, что и джарник грида.
После того, как я явно прописала путь до драйвера, стала вываливаться такая ошибка:

Caused by: org.openqa.selenium.WebDriverException: unknown error: Chrome failed to start: exited abnormally
12:49:43   (Driver info: chromedriver=2.32.498513 (2c63aa53b2c658de596ed550eb5267ec5967b351),
platform=Linux 4.4.0-112-generic x86_64) (WARNING: The server did not provide any stacktrace information)

Может кто сталкивался с подобным?
Или хотя бы наведет на мысль, в каком направлении копать?

Получается, если грид запущен из консоли с помощью удаленного рабочего стола - драйвер стартует, а если так же из консоли, но только через ssh, то нет.
Пользователь один и тот же.

Задумайтесь над следующим моментом - под каким юзером вы делаете ssh на машинку с поднятием грида и под каким юзером дженкинс стартует тесты (а соответственно и хром). Если под разными, то вот собственно и оно :slight_smile:

Нет, к сожалению пользователь один и тот же :frowning:

Тогда может посмотреть в сторону версий хромдрайвера и хрома на виртуалке?

2018 год на дворе, начинайте использовать докер
решение всех ваших проблем в трех шагах

  1. поставь docker на вашу убунту
  2. сделать файл docker-compose.yml и добавить в него следующий код
version: "2"
services:
   selenium-hub:
     image: selenium/hub:3.8.1
     container_name: selenium-hub
     ports:
       - "4444:4444"
   chrome:
     image: selenium/node-chrome:3.8.1
     depends_on:
       - selenium-hub
     environment:
       - HUB_PORT_4444_TCP_ADDR=selenium-hub
       - HUB_PORT_4444_TCP_PORT=4444
   firefox:
     image: selenium/node-firefox:3.8.1
     depends_on:
       - selenium-hub
     environment:
       - HUB_PORT_4444_TCP_ADDR=selenium-hub
       - HUB_PORT_4444_TCP_PORT=4444

  1. в jenkins сделайте отдельным шагом перед тестами поднятие докер контейнеров командой docker-compose up

Плюсы:

  1. Можете выкинуть ваши файлы драйверов т.к все уже будет внутри контейнеров
  2. Если после прогона тестов поставить еще один шаг с командой ‘docker-compose down’, то ваши ноды и хаб автоматом умрут со всеми процессами и т.д (держим тестовый сервер в чистоте)
  3. Любому человеку который захочет прогнать ваши тесты локально не надо искать что и как сделать для поднятия нода и хабов он просто делает одну команду docker-compose up и все.

Минусы:

  1. Иногда так бывает что на сервере для старта докера не хватает полномочий, но это все решаемо и не так часто случается.
  2. Прогон только для ff and chrome

Если хотите еще лучше решение, то посмотрите в сторону selenoid

1 лайк

Да нет, версии совместимые: драйвер 2.32, браузер 61. Это подтверждается тем, что если грид стартовать через удаленный рабочий стол из консоли, всё работает отлично: браузер запускается, тесты отрабатывают.

Да, это отличная мысль) Я в восторге от идеи использования селеноида!
Я даже загрузила нужный селеноид-контейнер на свою виндовую машину, но дальше пока не зашло, к сожалению - возникли другие вопросы более срочного порядка.

Но всё таки, мучительно любопытно, почему при старте грида по ssh браузер не стартует?

Единственное: возникло сомнение, хватит ли 4 гигов оперативки для поднятия контейнера?

У самого был раньше сервак на 4 гига, поднималось спокойно 2 ноды и 1 хаб, но при попытке запускать больше 1 браузера на одну ноду уже не хватало ресурсов.
Если на каждой ноде по одному браузеру все норм, но если на одной ноде 5 ff и на другой 5 chrome то уже 4 гига может не потянуть.

Вывод:
4 гигов спокойно хватает для параллельного запуска тестов в одном ff и в одном chrome, а это уже большая победа)) и улучшений в скорости тестирования и сборки.

Стоит еще добавить что на этой же машине поднималось еще приложение с базой и все крутилось без тормозов и быстро.

Отлично! Мне пока хватит и 3х нод, по одному хрому на каждую))