Простой пример использования Selenoid docker

Использование 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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *