Перейти к содержанию

Selenoid

Что это такое?

Selenoid - это аналог Selenium Hub, который позволяет запускать инстансы браузеров в Docker.
Как правило используется вместе с Selenoid UI - это веб-интерфейс, который позволяет смотреть за ходом выполнения сценариев инстансов, за их логами и так далее.

Ещё Selenoid позволяет записывать видео в браузере, сохранять логи в ELK (и не только), и потребляет ресурсов намного меньше, чем Selenium Hub.

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

Для работы selenoid и selenoid ui должны использовать одну и ту же сеть с контейнерами. Этого можно добиться при помощи установки сети в bridge. Сама конфигурация ниже:

version: '3'
services:
  selenoid:
    image: "aerokube/selenoid"
    network_mode: bridge
    ports:
      - "4444:4444"
    volumes:
      - "./browsers.json:/etc/selenoid/browsers.json" # текущий каталог должен содержать browsers.json
      - "/opt/video:/opt/selenoid/video" # каталог с видео
      - "/opt/logs:/opt/selenoid/logs" # каталог с логами
      - "/var/run/docker.sock:/var/run/docker.sock" # подключаемся к сокету докера чтобы иметь возможность создавать инстансы браузеров
    command: ["-video-output-dir", "/opt/selenoid/video", "-log-output-dir", "/opt/selenoid/logs"]
    restart: unless-stopped
  selenoid-ui:
    image: "aerokube/selenoid-ui"
    network_mode: bridge
    links:
      - selenoid
    ports:
      - "8080:8080"
    command: ["--selenoid-uri", "http://selenoid:4444"]
    restart: unless-stopped

browsers.json в себе содержит набор конфигураций браузеров, которые могут использовать клиенты selenoid.

{
    "firefox": {
        "default": "latest",
        "versions": {
            "latest": {
                "image": "selenoid/firefox",
                "port": "4444",
                "path": "/wd/hub",
                "tmpfs": {"/tmp":"size=512m"}
            }
        }
    },
    "chrome": {
        "default": "latest",
        "versions": {
            "latest": {
                "image": "selenoid/chrome",
                "port": "4444",
                "tmpfs": {"/tmp":"size=512m"}
            }
        }
    }
}

Запускаем:

docker compose up -d

После чего веб интерфейс будет доступен на порту 8080, а с самим Selenoid можно будет работать по 4444 порту.

Ссылки