Настройка selenium grid

Запись будет полезна для новичков, кто ни разу не сталкивался с grid-ом, но хотел попробовать.
И так, что же такое selenium grid. Это распределенная сесть selenium серверов для удаленного запуска браузеров.
И так, для начала нам необходимо скачать поcледнюю версию jar файла selenium-server-standalone с официального сайта selenium. На момент написания статьи это версия 3.1.0
После того как мы это сделали, нам необходимо запустить hub. (selenium-server-standalone можно запустить как в режиме hub, так и в режиме node) Hub — это центральный диспетчер, на который мы будем регистрировать необходимые нам сервера и на который будем слать все запросы от тестов.

Открываем консоль, переходим в директорию, в которой находится скаченный нами selenium-server-standalone и выполняем команду:

java -jar selenium-server-standalone-3.1.0.jar -role hub

В консоли у вас должно появится информация об успешном старте hub-a.

Запуск hub
Запуск hub

10:05:46.672 INFO — Nodes should register to http://192.168.1.121:4444/grid/register/
10:05:46.673 INFO — Selenium Grid hub is up and running

Первая строчка означает, что теперь мы можем регистрировать узлы на урл, где запущен hub. Вторая строчка означает,
что hub успешно запущен.

Далее необходимо запустить так называемые узлы (node), по которым диспетчер (hub) будет распределять запущенные нами тесты.
Node — это по сути экземпляр selenium server, на котором можно стартануть n-ое количество браузеров.
В данном примере я будут регистрировать и стартовать selenium node-ы на той же машине, на которой у меня запущен hub. Конечно же можно запускать hub на одной удаленной машине, а node-ы на куче других удаленных машин и регистрировать на текущий хаб, собственно говоря для этого selenium grid и нужен.

Открываем новое окно с консолью, в которой вводим следующую команду

java -jar selenium-server-standalone-3.1.0.jar -role node -hub http://192.168.1.121:4444/grid/register/

В этой команде мы стартуем узел и указываем адрес диспетчера, через который будут идти все запросы, адрес, на котором запущен наш hub. В моем случае это будет http://192.168.1.121:4444/wd/hub, но так как в данном примере hub у меня запущен локально на той же машине, на которой будут запущены узлы, то адрес хаба я мог указать, как
http://localhost:4444/grid/register/

В консоли мы видим информацию о том, что узел успешно запустился

running selenium node
running selenium node

При этом на консоли hub-a мы видим информацию о том, что зарегистрирован новый узел

10:54:27.585 INFO — Registered a node http://192.168.1.121:5555

Посмотреть текущее состоянии нашего selenium hub, какие node готовы к работе и какие браузеры в них доступны, можно перейдя в строке браузера на урл, где запущен selenium hub.
В моем случае это http://192.168.1.121:4444/ и оттуда мы переходим в selenium grid hub консоль.

В консоли мы видим, что на данный момент к hub подключена одна node. Когда стартует node, она не может определить какие браузеры доступны и поэтому используется стандартная конфигурация состоящая из 5 браузеров chrome, из 5 ff и 1 IE.

selenium grid console
selenium grid console

При этом на всех машинах, где у вас запущены node и где вы планируйте гонять свои тесты на разных браузерах, для каждого браузера на соответствующей машине должен лежать свой драйвер и настроена переменная path.
Подробную конфигурацию node можно посмотреть кликнув по вкладке Configuration данной node.

selenium grid config
selenium grid config

При запуске теста необходимо указывать адрес диспетчера, в моем случае это http://192.168.1.121:4444/wd/hub
При этот сам сценарий теста не знает адрес сервера, он знает адреса диспетчера. Все запросы идут через этот диспетчер и распределяются по узлам.

И так как на локальном компьютере у меня запущен hub и запущена одна node. И теперь я попробую запустить 1 тест используя браузер chrome, указав адрес hub-a.

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

А теперь запустим еще 1 узел на нашей локальной машине, зарегистрировав его на все тот же наш локальной запущенный хаб.
Открываем новую консоль и вводим

java -jar selenium-server-standalone-3.1.0.jar -role node -hub http://192.168.1.121:4444/grid/register/ -port 5556

Так как мы запускаем узел снова локально, на той же машине, то командой -port лучше указать номер порта, чтобы не получилось так, что узел будет пробовать запуститься на том порту, на котором запущен другой узел.

Смотрим в консоль об успешном запуске узла

stating new node
stating new node

В консоли с запущенным hub-ом мы видим информацию о том, что в диспетчере зарегистрирован новый узел

12:22:44.566 INFO — Registered a node http://192.168.1.121:5556

По адресу хаба http://192.168.1.121:4444/grid/console мы теперь видим информацию уже о двух узлах.

2 nodes
2 nodes

Также можно зайти в консоль конкретного узла, в моем случае это http://192.168.1.121:5555/wd/hub/static/resource/hub.html, где можно остановить сессию с браузером, создать новую, сделать скриншот экрана с нужным браузером.

Каким образом у нас настроен selenium grid на одном из проектов. У нас есть несколько мощных машин, на которых запущены хаб и ноды. При этом на каждой машине на включении настроены тригеры, которые запускают батники, в которых прописаны старты хабов и нодов с нужными конфигурациями. Примерный батник на одной из windows машин

cd C:\Users\Selenium\
java -jar selenium-server-standalone-3.0.1.jar -role node -hub http://192.168.1.2:4444/grid/register -browser browserName=chrome,version=…,maxInstances=8 -maxSession 8

Параметр browserName означает, что на узле должен использоваться браузер chrome.
Параметр -maxInstances задает максимальное количество экземпляров одного поддерживаемого браузера, которые могут быть запущены на одном узле.
Параметр -maxSession задает максимальное количество браузеров, которые могут быть запущены параллельно на одном узле.

В следующей статье попробую описать мои эксперименты с Selenium Grid Extras

Понравилась статья? Поделиться с друзьями:
Комментарии: 1
  1. Вадим

    Ждем статью про Selenium Grid Extras.

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.