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

Читал мануалы по настройке Jenkins и вычитал что для подключения Node нужно установить плагин Selenium.

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

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

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

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

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

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

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

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.

1 лайк

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

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

Я затрудняюсь Вам ответить :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) который знает на какой ноде живут какие браузеры, и перенаправляет запрос на конкретную ноду.

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

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

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

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

По адресу /wd/hub выдает 404 Screenshot by Lightshot

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

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

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

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

1 лайк

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

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