Для автоматизации браузеров с помощью WebdriverIO необходимы соответствующие WebDriver драйверы, которые обеспечивают связь между тестами и конкретным браузером. Каждый браузер требует собственного драйвера: Chrome использует chromedriver, Firefox — geckodriver, Edge — msedgedriver, Safari — safaridriver.
WebdriverIO позволяет управлять драйверами через пакеты NPM, что упрощает процесс настройки:
npm install chromedriver geckodriver msedgedriver --save-dev
После установки драйверы будут доступны в
node_modules/.bin и их можно использовать напрямую из
тестов WebdriverIO.
@wdio/cliWebdriverIO предоставляет утилиту CLI для конфигурации драйверов через services. Один из самых удобных сервисов — chromedriver:
npm install @wdio/cli @wdio/local-runner @wdio/mocha-framework @wdio/chromedriver-service --save-dev
В конфигурационном файле wdio.conf.js необходимо
добавить сервис:
exports.config = {
services: ['chromedriver'],
capabilities: [{
browserName: 'chrome'
}],
framework: 'mocha',
};
Сервис автоматически управляет запуском и остановкой ChromeDriver при старте и завершении тестов. Для Firefox и Edge существуют аналогичные сервисы, однако чаще используют прямой запуск драйвера через PATH.
Для использования драйверов вне NPM-пакетов их можно установить отдельно и добавить в системный PATH:
Скачать нужный драйвер:
Распаковать в удобную директорию.
Добавить путь к драйверу в переменную окружения PATH.
После этого WebdriverIO сможет автоматически находить драйвер без указания абсолютного пути.
Важно поддерживать совпадение версий драйвера и браузера:
Несоответствие версий приводит к ошибкам запуска тестов и невозможности соединения с браузером.
После установки драйвера можно проверить его работоспособность командой:
chromedriver --version
geckodriver --version
msedgedriver --version
WebdriverIO также может проверить подключение через простой тест:
const { remote } = require('webdriverio');
(async () => {
const browser = await remote({
capabilities: { browserName: 'chrome' }
});
await browser.url('https://example.com');
console.log(await browser.getTitle());
await browser.deleteSession();
})();
Если тест запускается без ошибок, драйвер установлен корректно и доступен WebdriverIO.
Эти шаги обеспечивают надёжное подключение WebdriverIO к браузерам и минимизируют ошибки при запуске тестов.