Selenium Grid — это инструмент для параллельного запуска автоматизированных тестов на разных браузерах и платформах. Он позволяет значительно ускорить выполнение тестов за счет распределения нагрузки между несколькими узлами. В связке с WebdriverIO Grid используется для управления удаленными WebDriver-сессиями.
Selenium Grid поставляется в составе Selenium Server в виде JAR-файла. Для работы потребуется Java (версии 8 и выше).
Установка Java Проверка установленной версии Java:
java -version
Если Java не установлена, ее нужно скачать с официального сайта OpenJDK или Oracle и установить в систему.
Скачивание Selenium Server Актуальная версия
Selenium Server доступна на официальной странице Selenium: https://www.selenium.dev/downloads/
Обычно скачивается файл вида
selenium-server-<version>.jar.
Настройка структуры Grid Grid состоит из Hub (центрального узла) и Nodes (исполняющих узлов). Hub управляет распределением тестов на Nodes. Nodes регистрируются на Hub, указывая поддерживаемые браузеры, версии и платформы.
Для запуска центрального узла Selenium Grid используется команда:
java -jar selenium-server-<version>.jar hub
При успешном запуске в консоли появится сообщение о том, что Hub
слушает соединения на порту 4444 (по умолчанию). Через
веб-интерфейс Hub доступен по адресу:
http://localhost:4444/ui
В интерфейсе отображается список подключенных Nodes и информация о состоянии Grid.
Node — это сервер, на котором будут выполняться тесты. Для запуска Node необходимо указать URL Hub и параметры поддерживаемых браузеров. Пример команды:
java -jar selenium-server-<version>.jar node --hub http://localhost:4444
Можно дополнительно указать конфигурационный файл JSON с параметрами:
{
"capabilities": [
{
"browserName": "chrome",
"maxInstances": 5,
"platformName": "ANY"
},
{
"browserName": "firefox",
"maxInstances": 3,
"platformName": "ANY"
}
],
"nodeStatusCheckTimeout": 5000,
"port": 5555
}
Запуск Node с конфигурационным файлом:
java -jar selenium-server-<version>.jar node --config node-config.json
После успешной регистрации Node появится в интерфейсе Hub, и он станет доступен для выполнения тестов.
WebdriverIO позволяет подключаться к Selenium Grid, используя
удаленный WebDriver. Для этого в конфигурационном файле
wdio.conf.js указываются следующие параметры:
exports.config = {
hostname: 'localhost',
port: 4444,
path: '/wd/hub',
capabilities: [{
browserName: 'chrome',
maxInstances: 5
}],
logLevel: 'info',
framework: 'mocha',
specs: ['./test/specs/**/*.js'],
};
hostname — адрес Hub.port — порт, на котором запущен Hub (по умолчанию
4444).path — путь к WebDriver API (/wd/hub для
Selenium 4).После запуска тестов WebdriverIO автоматически распределяет сессии по доступным Nodes.
Grid особенно полезен при большом количестве тестов. WebdriverIO
поддерживает параллельное выполнение через
maxInstances:
capabilities: [{
browserName: 'chrome',
maxInstances: 3
}]
При этом Grid распределяет тесты на доступные Nodes, соблюдая
ограничения maxInstances для каждого браузера.
Использование Docker Для упрощения развертывания можно использовать официальные Docker-образы Selenium Grid. Это позволяет быстро запускать Hub и Nodes на разных контейнерах без ручной установки браузеров.
Мониторинг состояния Nodes Регулярно проверять веб-интерфейс Hub, чтобы убедиться, что все Nodes доступны и корректно регистрируются.
Согласование версий браузеров и драйверов Несовпадение версий ChromeDriver/GeckoDriver с браузером может привести к ошибкам запуска тестов.
Логи и диагностика Использовать флаги
--log при запуске Hub и Node для сохранения
детализированных логов, что облегчает отладку проблем с
подключением.
Для тестирования работы Grid достаточно открыть веб-интерфейс Hub и убедиться, что зарегистрированы все необходимые Nodes. Также можно выполнить простой тест через WebdriverIO:
describe('Selenium Grid Test', () => {
it('should open Google', async () => {
await browser.url('https://www.google.com');
const title = await browser.getTitle();
console.log(title);
});
});
Если тест запускается на Grid и выводит корректный заголовок страницы, конфигурация полностью рабочая.
Selenium Grid позволяет организовать масштабируемое и эффективное тестирование, распределяя нагрузку между несколькими машинами и ускоряя прогон тестов за счет параллельного выполнения. WebdriverIO полностью интегрируется с Grid, обеспечивая удобное управление сессиями и настройку браузеров через конфигурационный файл.