WebdriverIO обеспечивает взаимодействие с браузерами через протокол WebDriver или DevTools. Основными браузерами, поддерживаемыми WebdriverIO, являются Chrome, Firefox, Safari, Edge и Internet Explorer (IE). Для каждого браузера необходим соответствующий драйвер:
Драйверы выполняют роль промежуточного слоя между WebdriverIO и браузером, обеспечивая управление сессиями, выполнение команд и получение данных. Для корректной работы драйверов важно, чтобы их версии совпадали с версией браузера.
Для Chrome и Firefox часто используется пакет
chromedriver или geckodriver через npm. После
установки драйвер автоматически подставляется в PATH, что позволяет
WebdriverIO запускать браузер без ручного указания пути. Для Safari и IE
драйверы поставляются с операционной системой или загружаются
отдельно.
Пример установки через npm:
npm install chromedriver --save-dev
npm install geckodriver --save-dev
После установки можно проверять версию драйвера:
npx chromedriver --version
npx geckodriver --version
В файле wdio.conf.js указывается объект
capabilities, который определяет браузер и его
параметры.
Пример конфигурации для Chrome:
exports.config = {
capabilities: [{
maxInstances: 1,
browserName: 'chrome',
'goog:chromeOptions': {
args: ['--headless', '--disable-gpu']
}
}]
};
Для Firefox:
exports.config = {
capabilities: [{
maxInstances: 1,
browserName: 'firefox',
'moz:firefoxOptions': {
args: ['-headless']
}
}]
};
Ключевые моменты:
maxInstances определяет, сколько параллельных сессий
можно запускать.browserName должен точно соответствовать
поддерживаемому браузеру.chromeOptions,
firefoxOptions) позволяют запускать браузер в headless
режиме, задавать размер окна, отключать уведомления и расширения.WebdriverIO поддерживает запуск тестов параллельно на нескольких
браузерах через настройку maxInstances и массива
capabilities. Например, можно одновременно запускать тесты
на Chrome и Firefox:
exports.config = {
capabilities: [
{
browserName: 'chrome',
maxInstances: 2,
'goog:chromeOptions': { args: ['--headless'] }
},
{
browserName: 'firefox',
maxInstances: 2,
'moz:firefoxOptions': { args: ['-headless'] }
}
]
};
При такой конфигурации WebdriverIO автоматически распределяет тесты между доступными браузерами и потоками, что ускоряет выполнение тестового набора.
WebdriverIO может использовать два режима: WebDriver и DevTools.
Пример использования DevTools:
exports.config = {
automationProtocol: 'devtools',
capabilities: [{
browserName: 'chrome',
'goog:chromeOptions': {
args: ['--headless']
}
}]
};
Для упрощения работы с драйверами часто используют утилиты:
webdriver-manager — для управления Selenium Server и
драйверамиchromedriver и geckodriver —
для автоматической установки и обновления драйверов под текущие версии
браузеровИспользование таких инструментов уменьшает ручную настройку и позволяет легко поддерживать актуальные версии драйверов в проекте.
При выборе браузера и драйвера необходимо учитывать: стабильность
работы, поддерживаемые функции (headless, DevTools), совместимость
версий, требования к параллельному тестированию и возможности интеграции
с CI/CD. Правильная конфигурация capabilities и установка
соответствующего драйвера обеспечивает надежное и предсказуемое
выполнение тестов на любых средах.