Установка WebDriver драйверов

Для автоматизации браузеров с помощью WebdriverIO необходимы соответствующие WebDriver драйверы, которые обеспечивают связь между тестами и конкретным браузером. Каждый браузер требует собственного драйвера: Chrome использует chromedriver, Firefox — geckodriver, Edge — msedgedriver, Safari — safaridriver.


Установка через NPM

WebdriverIO позволяет управлять драйверами через пакеты NPM, что упрощает процесс настройки:

npm install chromedriver geckodriver msedgedriver --save-dev
  • chromedriver — для Google Chrome и Chromium.
  • geckodriver — для Mozilla Firefox.
  • msedgedriver — для Microsoft Edge.

После установки драйверы будут доступны в node_modules/.bin и их можно использовать напрямую из тестов WebdriverIO.


Автоматическое управление драйверами с @wdio/cli

WebdriverIO предоставляет утилиту 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.


Настройка драйверов через системный PATH

Для использования драйверов вне NPM-пакетов их можно установить отдельно и добавить в системный PATH:

  1. Скачать нужный драйвер:

  2. Распаковать в удобную директорию.

  3. Добавить путь к драйверу в переменную окружения PATH.

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


Версии драйверов и совместимость

Важно поддерживать совпадение версий драйвера и браузера:

  • ChromeDriver поддерживает конкретные версии Chrome. Например, ChromeDriver 115 совместим с Chrome 115.
  • GeckoDriver регулярно обновляется, но всегда лучше проверять таблицу совместимости.
  • EdgeDriver должен соответствовать версии Microsoft Edge на машине.

Несоответствие версий приводит к ошибкам запуска тестов и невозможности соединения с браузером.


Локальный запуск vs удалённый сервер

  • Локальный запуск: драйверы устанавливаются на локальную машину, тесты запускаются напрямую. Подходит для разработки и CI с одной машиной.
  • Удалённый сервер (Selenium Grid или WebDriver сервера): драйверы запускаются на удалённых узлах, тесты взаимодействуют через сетевой протокол WebDriver. Для этого нужно установить драйверы на каждом узле и убедиться в их доступности по URL сервера.

Проверка установки драйвера

После установки драйвера можно проверить его работоспособность командой:

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.


Рекомендации по обновлению

  • Следить за обновлениями драйверов при обновлении браузеров.
  • Использовать NPM-пакеты или сервисы WebdriverIO для автоматического управления версиями.
  • В CI/CD использовать фиксированные версии драйверов, чтобы избежать нестабильности тестов.

Эти шаги обеспечивают надёжное подключение WebdriverIO к браузерам и минимизируют ошибки при запуске тестов.