Запускаем Selenium Grid

grid

Что такое Seleium Grid?

Selenium Grid – это кластер, включающий в себя несколько Selenium-серверов. Решает следующие задачи:

  • Распараллеливание запуска тестов на различных операционных системах, в различных браузерах на разных машинах.
  • Общее время прогона тестов.

Selenium Grid работает следующим образом: имеется центральный сервер (hub), к которому подключены узлы (node). Работа с кластером осуществляется через hub, при этом он просто транслирует запросы узлам. Узлы могут быть запущены на той же машине, что и hub или на других.

Начало работы с grid’ом.

  1. Скачать Selenium Server Standalone c оф. сайта selenium.
  2. Поместить selenium_server_x.xx.x.jar файл в удобную папку.
  3. Скачать WebDriver для браузера. Пример Chrome Driver.
  4. Архив извлеч в удобную папку (можно к grid’у).

Запуск Hub.

Команда для запуска хаба. Выполняется в директории, где лежит сервер.

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

Обратить внимание на версию скаченного сервера! -3.12.0.

При успешном страте увидим сообщение в консоли, нас интересует следующая строка:

23:09:14.761 INFO [Hub.start] - Nodes should register to http://192.168.1.155:4444/grid/register/

По этому адрессу будет регестрировать ноды.

Переходим http://localhost:4444/grid/console и видим консоль хаба. Все готово.

Запуск Node.

Команда для запуска ноды. Выполняется в директории, где лежит сервер.

java -Dwebdriver.chrome.driver=chromedriver.exe -jar selenium-server-standalone-3.12.0.jar -port 5555 -role webdriver -hub  http://localhost:4444/grid/register -browser "browserName=chrome, version=ANY, maxInstances=5, platform=Windows"

Рассмотрим команду:

  • -Dwebdriver.chrome.driver указываем драйвер. chromedriver это драйвер. который скачали и положили в папку с сервером. Если он в другом месте, нужно указать путь до него.
  • -port указываем порт на котором будет поднята нода.
  • -role указываем что это webdriver.
  • -hub указываем урл хаба http://localhost:4444/grid/register ( в данном случае хаб и нода на одной машине)
  • -browser “browserName=Chrome, version=ANY, maxInstances=5, platform=Windows” указываем настройки браузера. maxInstances показывает сколько будет браузеров доступно в ноде, если не указать версию и платформу они заполнятся автоматически.

Перейдем в консоль грида и увидим поднятую ноду с пятью хромами. Все готово к работе.

Настройка с помощью Json.

Hub можно настраивать через JSON файлы. Вот пример:

{
  "port": 4444,
  "newSessionWaitTimeout": -1,
  "servlets" : [],
  "withoutServlets": [],
  "custom": {},
  "capabilityMatcher": "org.openqa.grid.internal.utils.DefaultCapabilityMatcher",
  "registry": "org.openqa.grid.internal.DefaultGridRegistry",
  "throwOnCapabilityNotPresent": true,
  "cleanUpCycle": 5000,
  "role": "hub",
  "debug": false,
  "browserTimeout": 0,
  "timeout": 1800
}

Для запуска хаба с такими настройками нужно добавить к команде флаг -hubConfig hubconfig.json hubconfig.json это наш файл, который лежит в папке с сервером.

Настройка node дополнительно включает в себя информацию о поддерживаемых браузерах:

{
  "capabilities":
  [
    {
      "browserName": "firefox",
      "marionette": true,
      "maxInstances": 3,
      "seleniumProtocol": "WebDriver"
    },
    {
      "browserName": "chrome",
      "maxInstances": 4,
      "seleniumProtocol": "WebDriver"
       "webdriver.chrome.driver": "C:/Program Files (x86)/Google/Chrome/Application/chrome.exe"
    },
    {
      "browserName": "internet explorer",
      "platform": "WINDOWS",
      "maxInstances": 2,
      "seleniumProtocol": "WebDriver"
       "webdriver.ie.driver": "C:/Program Files (x86)/Internet Explorer/iexplore.exe"
    }
  ],
  "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
  "maxSession": 5,
  "port": 5556,
  "register": true,
  "registerCycle": 5000,
  "hub": "http://localhost:4444",
  "nodeStatusCheckTimeout": 5000,
  "nodePolling": 5000,
  "role": "node",
  "unregisterIfStillDownAfter": 60000,
  "downPollingLimit": 2,
  "debug": false,
  "servlets" : [],
  "withoutServlets": [],
  "custom": {}
}

Для запуска ноды вводим команду (где nodeconfig.json файл в директории с сервером):

java -jar selenium-server-standalone-3.12.0.jar -role node -nodeConfig nodeconfig.json

Перейдем в консоль грида и увидим поднятую ноду с 2 IE, 3 FF и 4 Chrome.

PREVIOUSЗапуск тестов с помощью Jenkins
NEXTJenkins в контейнере