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

Нужен ли мне Selenium RC для запуска тестов на Slave (Node) через Jenkins?

jenkins
selenium-grid
selenium
Теги: #<Tag:0x00007f7b68eb33a0> #<Tag:0x00007f7b68eb3198> #<Tag:0x00007f7b68eb2ec8>

(Денис Корейба) #1

Читал мануалы по настройке Jenkins и вычитал что для подключения Node нужно установить плагин https://wiki.jenkins-ci.org/display/JENKINS/Selenium+Plugin.

Плагин позволил создавать конфигурации, он запускал stand-alone-server.jar для селениума и что-то делал, а тесты успешно запускались на ноде.

Но я заметил что удаление этого плагина почти никак не повлияло на запуск тестов! Они все еще запускаются на нужном мне ноде.

Т.е. что я делаю: создал Node в настройках дженкинса, подключил виртуальную машинку. Запустил тесты, они начали выполняться на указанном ноде. Все окей.

Зачем тогда вообще нужен указанный выше плагин и зачем в таком случае Selenium RC?

Я понимаю что вопрос скорее всего звучит глупо, но хотелось бы во всем это разобраться. Поэтому если закидаете ссылками на матчасть, я не обижусь:)


(Stan) #2

а вы перезапускали мастер и слейвы после удаления плагина?


(Денис Корейба) #3

Да, все работает отлично.


#4

Selenium RC это вроде Remote Driver для Selenium версии 1. Сейчас он входит в состав Selenium 2, т.е. “все включено” в Selenium Standalone Server

Как вы могли узнать из “Краткой истории проекта Selenium”, Selenium RC долгое время был основным проектом Selenium, до тех пор пока в результате слияния WebDriver и Selenium не появился Selenium 2, новый и более мощный инструмент.

Пруф

The Selenium Server is needed in order to run either Selenium RC style scripts or Remote Selenium WebDriver ones. The 2.x server is a drop-in replacement for the old Selenium RC server and is designed to be backwards compatible with your existing infrastructure.


(Денис Корейба) #5

Спасибо за хороший ответ. Довольно исчерпывающе.

Но появился следующий вопрос: а нужен ли тогда stand-alone-server? В настройках Jenkins он указан тут http://prntscr.com/a7adhr. Как видно на скриншоте, из настроек путь к .jar файлу я удалил. А тесты на ноде все равно запустились без проблем. В чем тут загвоздка?


#6

Я затрудняюсь Вам ответить :slight_smile: Я никогда не пользовался этим плагином.

Скорее всего при инициализации вебдрайвера вы указываете путь к селениум серверу в коде. Что то типа
WebDriver driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), DesiredCapabilities.firefox());

По адресу
http://localhost:4444/wd/hub
может находится запущенный Selenium Server с ролью нода (по умолчанию) который сам инициализирует запуск требуемого драйвера так и Selenium Server с ролью хаба (-role hub) который знает на какой ноде живут какие браузеры, и перенаправляет запрос на конкретную ноду.

Подробнее написано тут

Отсюда и получается, что настройки плагина вы убрали, а тесты все равно запускаются


(Денис Корейба) #7

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

Но если не найду скопированный файл, то тогда не знаю в чем чудо)

По адресу /wd/hub выдает 404 http://prntscr.com/a7d3x6

Update: и так, я удалил плагин в котором я указывал путь к server.jar файлу.

В данный момент у меня есть 1 нод, который присоединен к дженкинсу с помощью Java аппликейшена.
В настройках нода сказано что он должен использоваться как можно больше.
Мои тесты запускаются на этом ноде.

Никакой Selenium Standalone Server оказался не нужным. Как так? Что я упустил?)


(Oleksandr Khotemskyi) #8

Нода дженкинса или нода Selenium Grid? Это разные вещи.
Если вы запускаете тесты и браузер на одной и то й же машине - то standalone server вам не нужен - будет использоватся локальный сервер который запустится специально для тестов и закроется после


(Денис Корейба) #9

Вот! Вероятно я все попутал. Я говорю о нодах дженкинса, а не селениум грида. И как я понял, ноды дженкинса не позволяют мне выполнять тесты на нескольких нодах, а ноды селениум грида позволяют, верно?

Тогда что мне нужно чтобы выполнять тесты на нескольких нодах, если я использую WebDriver (Selenium 2.0)?