Фреймворк поддерживает два режима управления WebDriver:
- Автоматический (по умолчанию) - использует WebDriverManager
- Ручной - использует локальные файлы драйверов
По умолчанию фреймворк использует WebDriverManager, который автоматически:
- Определяет версию установленного браузера
- Скачивает соответствующий драйвер
- Кэширует драйверы локально (
~/.cache/selenium/) - Настраивает system properties
✅ Не требует ручной настройки
✅ Автоматическое обновление драйверов
✅ Поддержка всех основных браузеров
✅ Кросс-платформенность (Windows, Linux, macOS)
# В default.properties или через -D параметр
webdriver.use.local=false# WebDriverManager автоматически управляет драйверами
mvn clean test -Dbrowser=chrome
mvn clean test -Dbrowser=firefox- Ограниченный доступ к интернету
- Корпоративная среда с proxy
- Нужна конкретная версия драйвера
- Драйверы уже загружены локально
# Официальный сайт
https://chromedriver.chromium.org/downloads
# Или через WebDriverManager (однократно)
webdrivermanager chromiumdriver --cache# Официальный сайт
https://github.com/mozilla/geckodriver/releases
# Или через WebDriverManager
webdrivermanager firefoxdriver --cache# Официальный сайт
https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
# Или через WebDriverManager
webdrivermanager edgedriver --cache# Официальный сайтРекомендуемая структура:
qa-ui-framework/
├── src/test/resources/drivers/
│ ├── windows/
│ │ ├── chromedriver.exe
│ │ ├── geckodriver.exe
│ │ └── msedgedriver.exe
│ ├── linux/
│ │ ├── chromedriver
│ │ ├── geckodriver
│ │ └── msedgedriver
│ └── macos/
│ ├── chromedriver
│ ├── geckodriver
│ └── msedgedriver
Важно: Сделайте файлы исполняемыми на Linux/macOS:
chmod +x src/test/resources/drivers/linux/*
chmod +x src/test/resources/drivers/macos/*local.properties:
# Включить режим локальных драйверов
webdriver.use.local=true
# Указать пути к драйверам
# Для Windows:
webdriver.chrome.driver=C:/qa-ui-framework/src/test/resources/drivers/windows/chromedriver.exe
webdriver.firefox.driver=C:/qa-ui-framework/src/test/resources/drivers/windows/geckodriver.exe
webdriver.edge.driver=C:/qa-ui-framework/src/test/resources/drivers/windows/msedgedriver.exe
# Для Linux:
webdriver.chrome.driver=/home/user/qa-ui-framework/src/test/resources/drivers/linux/chromedriver
webdriver.firefox.driver=/home/user/qa-ui-framework/src/test/resources/drivers/linux/geckodriver
webdriver.edge.driver=/home/user/qa-ui-framework/src/test/resources/drivers/linux/msedgedriver
# Для macOS:
webdriver.chrome.driver=/Users/user/qa-ui-framework/src/test/resources/drivers/macos/chromedriver
webdriver.firefox.driver=/Users/user/qa-ui-framework/src/test/resources/drivers/macos/geckodriver
webdriver.edge.driver=/Users/user/qa-ui-framework/src/test/resources/drivers/macos/msedgedriver.env:
WEBDRIVER_USE_LOCAL=true
WEBDRIVER_CHROME_DRIVER=/path/to/chromedriver
WEBDRIVER_FIREFOX_DRIVER=/path/to/geckodriver
WEBDRIVER_EDGE_DRIVER=/path/to/msedgedrivermvn clean test \
-Dwebdriver.use.local=true \
-Dwebdriver.chrome.driver=/path/to/chromedriverWindows:
set WEBDRIVER_USE_LOCAL=true
set WEBDRIVER_CHROME_DRIVER=C:\drivers\chromedriver.exe
mvn clean testLinux/macOS:
export WEBDRIVER_USE_LOCAL=true
export WEBDRIVER_CHROME_DRIVER=/usr/local/bin/chromedriver
mvn clean test# С локальным Chrome драйвером
mvn clean test -Dbrowser=chrome
# С локальным Firefox драйвером
mvn clean test -Dbrowser=firefoxАбсолютные (рекомендуется для CI/CD):
# Windows
webdriver.chrome.driver=C:/tools/drivers/chromedriver.exe
# Linux
webdriver.chrome.driver=/opt/selenium/chromedriver
# macOS
webdriver.chrome.driver=/usr/local/bin/chromedriverОтносительные (удобно для локальной разработки):
# Относительно корня проекта
webdriver.chrome.driver=src/test/resources/drivers/linux/chromedriverЕсли драйверы в системном PATH, можно указать только имя:
webdriver.chrome.driver=chromedriver
webdriver.firefox.driver=geckodriverlocal.properties:
webdriver.use.local=false # Используем WebDriverManagerci.properties:
webdriver.use.local=true
webdriver.chrome.driver=/usr/local/bin/chromedriver
webdriver.firefox.driver=/usr/local/bin/geckodriverВ Dockerfile уже настроены драйверы через WebDriverManager.
Если нужны локальные драйверы:
# Копировать драйверы в образ
COPY src/test/resources/drivers/linux/* /usr/local/bin/
RUN chmod +x /usr/local/bin/chromedriver /usr/local/bin/geckodriver
ENV WEBDRIVER_USE_LOCAL=true
ENV WEBDRIVER_CHROME_DRIVER=/usr/local/bin/chromedriver
ENV WEBDRIVER_FIREFOX_DRIVER=/usr/local/bin/geckodriverПри запуске тестов в логах будет видно:
Using local Chrome driver from: /path/to/chromedriver
или
Using WebDriverManager for Chrome
test-driver.sh:
#!/bin/bash
echo "Testing WebDriver configuration..."
# Тест с WebDriverManager
mvn test -Dtest=LoginSuccessTests -Dwebdriver.use.local=false
# Тест с локальным драйвером
mvn test -Dtest=LoginSuccessTests -Dwebdriver.use.local=trueРешение:
# Проверьте путь к файлу
ls -la /path/to/chromedriver
# Проверьте права доступа (Linux/macOS)
chmod +x /path/to/chromedriver
# Проверьте правильность пути в конфигурации
cat src/main/resources/config/local.properties | grep webdriverРешение:
# Проверьте версию браузера
google-chrome --version # Chrome
firefox --version # Firefox
# Скачайте соответствующую версию драйвера
# Например, для Chrome 120.x.x.x нужен ChromeDriver 120.x.x.xРешение:
# Сделайте файл исполняемым
chmod +x /path/to/chromedriver
# Или для всех драйверов
chmod +x src/test/resources/drivers/linux/*Решение:
# Разблокируйте драйвер
xattr -d com.apple.quarantine /path/to/chromedriver
# Или через System Preferences
# Security & Privacy → Allow chromedriverФреймворк проверяет конфигурацию в следующем порядке:
- System properties (
-Dkey=value) - Environment variables
- Properties файлы (
local.properties,ci.properties) - Default properties (
default.properties)
Пример:
# System property имеет высший приоритет
mvn clean test \
-Dwebdriver.use.local=true \
-Dwebdriver.chrome.driver=/custom/path/chromedriverwebdriver.use.local=falsewebdriver.use.local=true
webdriver.chrome.driver=/path/to/chromedriverwebdriver.use.local=true
webdriver.chrome.driver=/drivers/chromedriver
webdriver.firefox.driver=/drivers/geckodriver
webdriver.edge.driver=/drivers/msedgedriverwebdriver.use.local=true
webdriver.chrome.driver=chromedriver # В PATH
webdriver.firefox.driver=geckodriver # В PATH- ✅ Для локальной разработки - используйте WebDriverManager (default)
- ✅ Для CI/CD - используйте предустановленные драйверы в Docker образе
- ✅ Версионируйте драйверы - храните в Git LFS или artifact repository
- ✅ Документируйте версии - какой драйвер для какого браузера
- ✅ Автоматизируйте обновление - создайте скрипт для скачивания
- ✅ Проверяйте права - убедитесь что драйверы executable
- ✅ Используйте относительные пути - для переносимости