Использование Selenoid docker будет продемонстрировано на простом примере написания теста на Python c использованием Pytest.
Кратко процесс запуска Selenoid с использованием docker можно описать так:
- скачиваем докер-образы браузеров, например selenoid/chrome:latest
- создаем файл c конфигом browsers.json
- скачиваем докер-образ сервера Selenoid - aerokube/selenoid:latest-release
- запускаем контейнер сервера Selenoid с конфигом browsers.json
- в тестах используем selenium.webdriver.Remote с подключением к http://localhost:4444/wd/hub
Далее следует более подробное описание процесса развертывания контейнера Selenoid и его использования в Pytest
1. Подготовьте рабочую папку с файлами
test_project/
├── conftest.py
├── test_mytest.py
├── requirements.txt
└── browsers.json
2. Опишите конфигурацию браузеров для selenoid в файле browsers.json. В примере описана конфигурация для браузера Chrome, версия докер-образа latest
{
"chrome": {
"default": "latest",
"versions": {
"latest": {
"image": "selenoid/chrome:latest",
"port": "4444",
"path": "/"
}
}
}
}
3. Скачайте образ docker для chrome:latest
docker pull selenoid/chrome:latest
4. Скачайте и запустите образ сервера Selenoid. Необходимо заменить C:\path\to\your\ на свой путь к файлу browser.json
docker run -d --name selenoid -p 4444:4444 -v /var/run/docker.sock:/var/run/docker.sock -v C:\path\to\your\browsers.json:/etc/selenoid/browsers.json aerokube/selenoid:latest-release
Сервер Selenoid готов. Можно приступать к написанию тестов.
5. Пример списка необходимых библиотек requirements.txt
selenium>=4.0.0
pytest>=6.0.0
requests>=2.25.0
6. Устанавливаем библиотеки
pip install -r requirements.txt
7. Создаем фикстуры для pytest в conftest.py. В примере ниже описана фикстура создания драйвера браузера Chrome.
import pytest
from selenium.webdriver import Remote
from selenium.webdriver.chrome.options import Options as ChromeOptions
@pytest.fixture()
def set_up_browser():
selenoid_url = "http://localhost:4444/wd/hub"
options = ChromeOptions()
options.set_capability("browserName", "chrome")
driver = Remote(command_executor=selenoid_url, options=options)
yield driver
driver.quit()
8. Создаем файл с тестом test_mytest.py
class TestExample:
def test_title(self, set_up_browser):
driver = set_up_browser
driver.get("https://soft-setup.ru")
assert driver.title == 'Soft-Setup.ru | Просто о решении сложных задач в IT'
9. Открываем консоль, переходим в папку с тестом и запускаем pytest -v
test_set.py::TestExample::test_title PASSED
