Проект стал возможен благодаря участникам-волонтерам, которые потратили тысячи часов своего времени и предоставили исходный код в свободный доступ по лицензии Apache 2.0.
Эти образы Docker содержат несколько тегов, упрощающих их использование. Ознакомьтесь с ними в одном из наших выпусков.
Чтобы получать уведомления о новых выпусках, добавьте себя в список наблюдателей «Только выпуски».
Эти изображения публикуются в реестре Docker Hub в Selenium Docker Hub.
Вам нужна помощь в использовании этих образов Docker? Свяжитесь с нами по адресу https://www.selenium.dev/support/.
--shm-size="2g"
docker run -d -p 4444:4444 -p 7900:7900 --shm-size= " 2g " selenium/standalone-firefox:4.26.0-20241101
Направьте свои тесты WebDriver на http://localhost:4444.
Вот и все!
(Необязательно) Чтобы увидеть, что происходит внутри контейнера, перейдите по адресу http://localhost:7900/?autoconnect=1&resize=scale&password=secret.
Дополнительные сведения о визуализации активности контейнера см. в разделе «Отладка».
☝️ При запуске docker run
для образа, содержащего браузер, используйте флаг --shm-size=2g
чтобы использовать общую память хоста.
☝️ Всегда используйте изображение Docker с полным тегом, чтобы закрепить определенный браузер и версию Grid. Подробности см. в разделе Соглашения о тегах.
Начиная с тега изображения, основанного на 4.21.0
, архитектуры, поддерживаемые этим проектом, следующие:
Архитектура | Доступный |
---|---|
x86_64 (он же amd64) | ✅ |
aarch64 (он же Arm64/armv8) | ✅ |
ArmHF (он же Arm32/armv7l) | ❌ |
Следующие браузеры доступны в многоархивных образах:
Архитектура | Хром | Хром | Firefox | Край |
---|---|---|---|---|
x86_64 (он же amd64) | ✅ | ✅ | ✅ | ✅ |
aarch64 (он же Arm64/armv8) | ❌ | ✅ | ✅ | ❌ |
ArmHF (он же Arm32/armv7l) | ❌ | ❌ | ❌ | ❌ |
Примечание:
Google не создает Chrome ( google-chrome
) для платформ Linux/ARM. Следовательно, образы Chrome (узловые и автономные) доступны только для AMD64. Аналогично, Microsoft не создает Edge ( microsoft-edge
) для платформ Linux/ARM.
Запуск образа AMD64 в режиме эмуляции на платформе ARM64 не рекомендуется из-за проблем с производительностью и стабильностью.
Для Linux/ARM используйте браузер Chromium с открытым исходным кодом. Образы Chromium (узловые и автономные) доступны в мультиархивной версии.
$ docker run --rm -it -p 4444:4444 -p 5900:5900 -p 7900:7900 --shm-size 2g selenium/standalone-chromium:latest
Многоархивные образы тестируются на CircleCI с классом ресурсов Linux/ARM64. Смотрите статус ниже.
Для экспериментальных образов контейнеров Docker, которые работают на таких платформах, как Apple M-серии или Raspberry Pi, репозиторий seleniumhq-community/docker-seleniarm предоставил образы, которые опубликованы в реестре Seleniarm Docker Hub.
Дополнительную информацию об этих изображениях см. в выпуске № 1076.
Теперь форк seleniumhq-community/docker-seleniarm был объединен.
Мы рекомендуем включить экспериментальную функцию хранилища образов контейнеров в Docker Engine. containerd
понимает мультиплатформенные образы, где один тег изображения может относиться к различным вариантам, охватывающим ряд ОС и аппаратных архитектур. Это упрощает процесс создания, хранения и распространения изображений на разных платформах.
Одна команда для включения этой функции в Docker Engine:
make set_containerd_image_store
Чтобы собрать все образы для мультиплатформенности, выполните следующую команду:
PLATFORMS=linux/amd64,linux/arm64 make build
Чтобы создать образы для конкретной платформы, выполните следующую команду:
PLATFORMS=linux/arm64 make build
По умолчанию, без указания переменной PLATFORMS
, образы создаются для платформы linux/amd64
.
Образы Nightly созданы на основе сборки Nightly на основе вышестоящего проекта Selenium с последними изменениями в основной ветке этого репозитория. Тег изображения — nightly
. Не рекомендуется использовать изображения в производстве. Это только для целей тестирования.
$ docker run -d -p 4442-4444:4442-4444 --name selenium-hub selenium/hub:nightly
Ознакомьтесь с Docker Compose, чтобы начать работу с Nightly images docker-compose-v3-full-grid-nightly.yml
Чтобы запускать тесты или иным образом работать с предварительными версиями браузеров, Google, Mozilla и Microsoft поддерживают канал выпуска Dev и Beta для тех, кому нужно увидеть, что скоро будет выпущено для широких слоев населения.
Вот инструкции по их запуску в автономном режиме:
Хром Бета:
$ docker run --rm -it -p 4444:4444 -p 7900:7900 --shm-size 2g selenium/standalone-chrome:beta
Разработчик Chrome:
$ docker run --rm -it -p 4444:4444 -p 7900:7900 --shm-size 2g selenium/standalone-chrome:dev
Бета-версия Firefox:
$ docker run --rm -it -p 4444:4444 -p 7900:7900 --shm-size 2g selenium/standalone-firefox:beta
Разработчик Firefox:
$ docker run --rm -it -p 4444:4444 -p 7900:7900 --shm-size 2g selenium/standalone-firefox:dev
Крайняя бета-версия:
$ docker run --rm -it -p 4444:4444 -p 7900:7900 --shm-size 2g selenium/standalone-edge:beta
Крайний разработчик:
$ docker run --rm -it -p 4444:4444 -p 7900:7900 --shm-size 2g selenium/standalone-edge:dev
docker-compose-v3-beta-channel.yml:
# To execute this docker compose yml file use `docker compose -f docker-compose-v3-beta-channel.yml up`
# Add the `-d` flag at the end for detached execution
# To stop the execution, hit Ctrl+C, and then `docker compose -f docker-compose-v3-beta-channel.yml down`
version: " 3 "
services:
chrome:
image: selenium/node-chrome:beta
shm_size: 2gb
depends_on:
- selenium-hub
environment:
- SE_EVENT_BUS_HOST=selenium-hub
- SE_EVENT_BUS_PUBLISH_PORT=4442
- SE_EVENT_BUS_SUBSCRIBE_PORT=4443
edge:
image: selenium/node-edge:beta
shm_size: 2gb
depends_on:
- selenium-hub
environment:
- SE_EVENT_BUS_HOST=selenium-hub
- SE_EVENT_BUS_PUBLISH_PORT=4442
- SE_EVENT_BUS_SUBSCRIBE_PORT=4443
firefox:
image: selenium/node-firefox:beta
shm_size: 2gb
depends_on:
- selenium-hub
environment:
- SE_EVENT_BUS_HOST=selenium-hub
- SE_EVENT_BUS_PUBLISH_PORT=4442
- SE_EVENT_BUS_SUBSCRIBE_PORT=4443
selenium-hub:
image: selenium/hub:latest
container_name: selenium-hub
ports:
- " 4442:4442 "
- " 4443:4443 "
- " 4444:4444 "
docker-compose-v3-dev-channel.yml:
# To execute this docker compose yml file use `docker compose -f docker-compose-v3-dev-channel.yml up`
# Add the `-d` flag at the end for detached execution
# To stop the execution, hit Ctrl+C, and then `docker compose -f docker-compose-v3-dev-channel.yml down`
version: " 3 "
services:
chrome:
image: selenium/node-chrome:dev
shm_size: 2gb
depends_on:
- selenium-hub
environment:
- SE_EVENT_BUS_HOST=selenium-hub
- SE_EVENT_BUS_PUBLISH_PORT=4442
- SE_EVENT_BUS_SUBSCRIBE_PORT=4443
edge:
image: selenium/node-edge:dev
shm_size: 2gb
depends_on:
- selenium-hub
environment:
- SE_EVENT_BUS_HOST=selenium-hub
- SE_EVENT_BUS_PUBLISH_PORT=4442
- SE_EVENT_BUS_SUBSCRIBE_PORT=4443
firefox:
image: selenium/node-firefox:dev
shm_size: 2gb
depends_on:
- selenium-hub
environment:
- SE_EVENT_BUS_HOST=selenium-hub
- SE_EVENT_BUS_PUBLISH_PORT=4442
- SE_EVENT_BUS_SUBSCRIBE_PORT=4443
selenium-hub:
image: selenium/hub:latest
container_name: selenium-hub
ports:
- " 4442:4442 "
- " 4443:4443 "
- " 4444:4444 "
Дополнительные сведения об образах контейнеров каналов разработки и бета-версии см. в записи блога о браузерах каналов разработки и бета-версии через Docker Selenium.
Firefox
docker run -d -p 4444:4444 --shm-size= " 2g " selenium/standalone-firefox:4.26.0-20241101
Хром
docker run -d -p 4444:4444 --shm-size= " 2g " selenium/standalone-chrome:4.26.0-20241101
Край
docker run -d -p 4444:4444 --shm-size= " 2g " selenium/standalone-edge:4.26.0-20241101
Примечание. Одновременно на порту 4444
может работать только один автономный контейнер .
Существуют разные способы запуска изображений и создания сетки с концентратором и узлами. Проверьте следующие параметры.
Хаб и узлы будут созданы в одной сети и будут узнавать друг друга по имени контейнера. В качестве первого шага необходимо создать сеть Docker.
$ docker network create grid
$ docker run -d -p 4442-4444:4442-4444 --net grid --name selenium-hub selenium/hub:4.26.0-20241101
$ docker run -d --net grid -e SE_EVENT_BUS_HOST=selenium-hub
--shm-size= " 2g "
-e SE_EVENT_BUS_PUBLISH_PORT=4442
-e SE_EVENT_BUS_SUBSCRIBE_PORT=4443
selenium/node-chrome:4.26.0-20241101
$ docker run -d --net grid -e SE_EVENT_BUS_HOST=selenium-hub
--shm-size= " 2g "
-e SE_EVENT_BUS_PUBLISH_PORT=4442
-e SE_EVENT_BUS_SUBSCRIBE_PORT=4443
selenium/node-edge:4.26.0-20241101
$ docker run -d --net grid -e SE_EVENT_BUS_HOST=selenium-hub
--shm-size= " 2g "
-e SE_EVENT_BUS_PUBLISH_PORT=4442
-e SE_EVENT_BUS_SUBSCRIBE_PORT=4443
selenium/node-firefox:4.26.0-20241101
$ docker network create grid
$ docker run - d - p 4442 - 4444 : 4442 - 4444 -- net grid -- name selenium - hub selenium / hub: 4.26 . 0 - 20241101
$ docker run - d -- net grid - e SE_EVENT_BUS_HOST = selenium - hub `
-- shm - size = " 2g " `
- e SE_EVENT_BUS_PUBLISH_PORT = 4442 `
- e SE_EVENT_BUS_SUBSCRIBE_PORT = 4443 `
selenium / node - chrome: 4.26 . 0 - 20241101
$ docker run - d -- net grid - e SE_EVENT_BUS_HOST = selenium - hub `
-- shm - size = " 2g " `
- e SE_EVENT_BUS_PUBLISH_PORT = 4442 `
- e SE_EVENT_BUS_SUBSCRIBE_PORT = 4443 `
selenium / node - edge: 4.26 . 0 - 20241101
$ docker run - d -- net grid - e SE_EVENT_BUS_HOST = selenium - hub `
-- shm - size = " 2g " `
- e SE_EVENT_BUS_PUBLISH_PORT = 4442 `
- e SE_EVENT_BUS_SUBSCRIBE_PORT = 4443 `
selenium / node - firefox: 4.26 . 0 - 20241101
Когда вы закончите использовать Grid и контейнеры завершатся, сеть можно удалить с помощью следующей команды:
# Removes the grid network
$ docker network rm grid
Хаб и узлы будут созданы на разных машинах/виртуальных машинах. Для правильного взаимодействия им необходимо знать IP-адреса друг друга. Если на одном компьютере/виртуальной машине будет работать более одного узла, они должны быть настроены на предоставление разных портов.
$ docker run -d -p 4442-4444:4442-4444 --name selenium-hub selenium/hub:4.26.0-20241101
$ docker run -d -p 5555:5555
--shm-size= " 2g "
-e SE_EVENT_BUS_HOST= < ip-from-machine- 1>
-e SE_EVENT_BUS_PUBLISH_PORT=4442
-e SE_EVENT_BUS_SUBSCRIBE_PORT=4443
-e SE_NODE_HOST= < ip-from-machine- 2>
selenium/node-chrome:4.26.0-20241101
$ docker run - d - p 5555 : 5555 `
-- shm - size = " 2g " `
- e SE_EVENT_BUS_HOST = < ip - from - machine - 1> `
- e SE_EVENT_BUS_PUBLISH_PORT = 4442 `
- e SE_EVENT_BUS_SUBSCRIBE_PORT = 4443 `
- e SE_NODE_HOST = < ip - from - machine - 2> `
selenium / node - chrome: 4.26 . 0 - 20241101
$ docker run -d -p 5555:5555
--shm-size= " 2g "
-e SE_EVENT_BUS_HOST= < ip-from-machine- 1>
-e SE_EVENT_BUS_PUBLISH_PORT=4442
-e SE_EVENT_BUS_SUBSCRIBE_PORT=4443
-e SE_NODE_HOST= < ip-from-machine- 3>
selenium/node-edge:4.26.0-20241101
$ docker run - d - p 5555 : 5555 `
-- shm - size = " 2g " `
- e SE_EVENT_BUS_HOST = < ip - from - machine - 1> `
- e SE_EVENT_BUS_PUBLISH_PORT = 4442 `
- e SE_EVENT_BUS_SUBSCRIBE_PORT = 4443 `
- e SE_NODE_HOST = < ip - from - machine - 3> `
selenium / node - edge: 4.26 . 0 - 20241101
$ docker run -d -p 5555:5555
--shm-size= " 2g "
-e SE_EVENT_BUS_HOST= < ip-from-machine- 1>
-e SE_EVENT_BUS_PUBLISH_PORT=4442
-e SE_EVENT_BUS_SUBSCRIBE_PORT=4443
-e SE_NODE_HOST= < ip-from-machine- 4>
selenium/node-firefox:4.26.0-20241101
$ docker run - d - p 5555 : 5555 `
-- shm - size = " 2g " `
- e SE_EVENT_BUS_HOST = < ip - from - machine - 1> `
- e SE_EVENT_BUS_PUBLISH_PORT = 4442 `
- e SE_EVENT_BUS_SUBSCRIBE_PORT = 4443 `
- e SE_NODE_HOST = < ip - from - machine - 4> `
selenium / node - firefox: 4.26 . 0 - 20241101
$ docker run -d -p 5556:5556
--shm-size= " 2g "
-e SE_EVENT_BUS_HOST= < ip-from-machine- 1>
-e SE_EVENT_BUS_PUBLISH_PORT=4442
-e SE_EVENT_BUS_SUBSCRIBE_PORT=4443
-e SE_NODE_HOST= < ip-from-machine- 4>
-e SE_NODE_PORT=5556
selenium/node-chrome:4.26.0-20241101
$ docker run - d - p 5556 : 5556 `
-- shm - size = " 2g " `
- e SE_EVENT_BUS_HOST = < ip - from - machine - 1> `
- e SE_EVENT_BUS_PUBLISH_PORT = 4442 `
- e SE_EVENT_BUS_SUBSCRIBE_PORT = 4443 `
- e SE_NODE_HOST = < ip - from - machine - 4> `
- e SE_NODE_PORT = 5556 `
selenium / node - chrome: 4.26 . 0 - 20241101
Docker Compose — это самый простой способ запустить Grid. Используйте указанные ниже ресурсы, сохраните их локально и проверьте инструкции по выполнению поверх каждого файла.
docker-compose-v2.yml
docker-compose-v3.yml
Чтобы остановить Grid и очистить созданные контейнеры, запустите docker compose down
.
docker-compose-v3-swarm.yml
Можно запустить Selenium Grid со всеми его компонентами. Для простоты будет предоставлен только пример с Docker Compose. Сохраните файл локально и проверьте инструкции по выполнению поверх него.
docker-compose-v3-full-grid.yml
Переменная среды | Вариант | Тип | Значение по умолчанию | Описание |
---|---|---|---|---|
SE_REJECT_UNSUPPORTED_CAPS | --reject-unsupported-caps | логическое значение | false | Разрешить Дистрибьютору немедленно отклонить запрос, если Grid не поддерживает запрошенную возможность. |
SE_HEALTHCHECK_INTERVAL | --healthcheck-interval | интервал | 120 | Это гарантирует, что сервер сможет успешно пропинговать все узлы после определенного интервала. |
Выполнение тестов можно записать с помощью Docker-образа selenium/video:ffmpeg-7.1-20241101
. Для каждого контейнера, в котором запущен браузер, необходим один контейнер. Это означает, что если вы используете 5 узлов/автономных контейнеров, вам понадобится 5 видеоконтейнеров, сопоставление 1-1.
В настоящее время единственный способ выполнить это сопоставление — вручную (запуск контейнеров вручную или через docker compose
). Мы повторяем этот процесс, и, вероятно, в будущем эта настройка станет более простой.
Предоставляемый нами видеообраз Docker основан на образе ffmpeg Ubuntu, предоставленном проектом jrottenberg/ffmpeg. Благодарим вас за предоставление этого образа и упрощение нашей работы.
Начиная с тега изображения, основанного на 4.20.0
, видео-образ Docker основан на образе FFmpeg Ubuntu, предоставленном проектом linuxserver/docker-ffmpeg, поскольку образ доступен для нескольких платформ. Благодарим вас за упрощение нашего проекта и помощь в продвижении вперед благодаря поддержке нескольких архитектур.
Примечания :
/videos
внутри видеоконтейнера. Сопоставьте локальный каталог для получения видео.FILE_NAME
, чтобы избежать непредвиденных результатов.В этом примере показано, как запустить контейнеры вручную:
$ docker network create grid
$ docker run -d -p 4444:4444 -p 6900:5900 --net grid --name selenium --shm-size= " 2g " selenium/standalone-chrome:4.26.0-20241101
$ docker run -d --net grid --name video -v /tmp/videos:/videos selenium/video:ffmpeg-7.1-20241101
# Run your tests
$ docker stop video && docker rm video
$ docker stop selenium && docker rm selenium
После того как контейнеры будут остановлены и удалены, вы должны увидеть видеофайл в каталоге /tmp/videos
вашего компьютера.
Вот пример использования концентратора и нескольких узлов:
docker-compose-v3-video.yml
На основе поддержки метаданных в тестах. Когда видеомагнитофон развернут с узлом браузера с включением SE_VIDEO_FILE_NAME=auto
и добавлением метаданных в ваши тесты, имя видеофайла извлечет значение возможности se:name
и будет использовать его в качестве имени видеофайла.
Например, в привязке Python:
from selenium . webdriver . chrome . options import Options as ChromeOptions
from selenium import webdriver
options = ChromeOptions ()
options . set_capability ( 'se:name' , 'test_visit_basic_auth_secured_page (ChromeTests)' )
driver = webdriver . Remote ( options = options , command_executor = "http://localhost:4444" )
driver . get ( "https://selenium.dev" )
driver . quit ()
Имя выходного видеофайла будет test_visit_basic_auth_secured_page_ChromeTests_<sessionId>.mp4
.
Если имя вашего теста обрабатывается платформой тестирования и оно наверняка уникально, вы также можете отключить добавление идентификатора сеанса к имени видеофайла, установив SE_VIDEO_FILE_NAME_SUFFIX=false
.
Имя файла будет сокращено до 255 символов, чтобы избежать длинных имен файлов. При этом space
будет заменен на _
, а в имени файла останутся только символы алфавита, цифры, -
(дефис), _
(подчеркивание).
Регулярное выражение обрезки можно настроить, установив переменную среды SE_VIDEO_FILE_NAME_TRIM_REGEX
. Значение по умолчанию — [:alnum:]-_
. Регулярное выражение должно быть совместимо с командой tr
в bash.
На уровне развертывания контейнер рекордера всегда включен. Кроме того, вы можете отключить процесс записи видео с помощью возможности сеанса se:recordVideo
. Например, в привязке Python:
options . set_capability ( 'se:recordVideo' , False )
В контейнере рекордера будет выполняться запрос GraphQL в Hub на основе Node SessionId и извлекать значение se:recordVideo
из возможностей, прежде чем принять решение начинать процесс записи видео или нет.
Примечания. Чтобы достичь конечной точки GraphQL, контейнеру записи необходимо знать URL-адрес концентратора. URL-адрес хаба можно передать через переменную среды SE_NODE_GRID_URL
. Например, SE_NODE_GRID_URL
— это http://selenium-hub:4444
.
RCLONE устанавливается в образ видеорегистратора. Вы можете использовать его для загрузки видео в облачное хранилище. Помимо упомянутой выше видеозаписи, вы можете включить функцию загрузки, установив следующие переменные среды:
version : " 3 "
services :
chrome_video :
image : selenium/video:ffmpeg-7.1-20241101
depends_on :
- chrome
environment :
- DISPLAY_CONTAINER_NAME=chrome
- SE_VIDEO_FILE_NAME=auto
- SE_VIDEO_UPLOAD_ENABLED=true
- SE_UPLOAD_DESTINATION_PREFIX=s3://mybucket/path
- RCLONE_CONFIG_S3_TYPE=s3
- RCLONE_CONFIG_S3_PROVIDER=GCS
- RCLONE_CONFIG_S3_ENV_AUTH=true
- RCLONE_CONFIG_S3_REGION=asia-southeast1
- RCLONE_CONFIG_S3_LOCATION_CONSTRAINT=asia-southeast1
- RCLONE_CONFIG_S3_ACL=private
- RCLONE_CONFIG_S3_ACCESS_KEY_ID=xxx
- RCLONE_CONFIG_S3_SECRET_ACCESS_KEY=xxx
- RCLONE_CONFIG_S3_ENDPOINT=https://storage.googleapis.com
- RCLONE_CONFIG_S3_NO_CHECK_BUCKET=true
SE_VIDEO_FILE_NAME=auto
будет использовать идентификатор сеанса в качестве имени видеофайла. Это гарантирует, что имя видеофайла будет уникальным для загрузки. Создание имени видеофайла автоматически работает на основе конечной точки /status
узла (и необязательной конечной точки GraphQL) для получения идентификатора сеанса и возможностей.
SE_VIDEO_UPLOAD_ENABLED=true
включит функцию загрузки видео. В фоновом режиме он создаст конвейерный файл с файлом и местом назначения, который загрузчик сможет использовать и продолжить.
SE_VIDEO_INTERNAL_UPLOAD=true
будет использовать для загрузки RCLONE, установленный в контейнере. Если вы хотите использовать для загрузки другой дополнительный контейнер, установите для него значение false
.
Переменные ENV для каждого режима | Хаб/Узлы | Автономные роли | Динамическая сетка |
---|---|---|---|
SE_VIDEO_RECORD_STANDALONE (обязательно) | false (по умолчанию) | true | true |
DISPLAY_CONTAINER_NAME (обязательно) | пользовательский ввод | пользовательский ввод | (не обязательно) |
SE_NODE_PORT (необязательно) | 5555 | 4444 | (не обязательно) |
SE_NODE_GRID_URL (необязательно) | пользовательский ввод | (не обязательно) | (не обязательно) |
Для переменных среды с префиксом RCLONE_
используется для передачи удаленной конфигурации в RCLONE. Более подробную информацию о конфигурации RCLONE можно найти здесь. При использовании в динамической сетке эти переменные следует комбинировать с префиксом SE_
, например SE_RCLONE_
. Более подробную информацию смотрите в ссылке ниже.
Настройте запись и загрузку видео для Hub и Nodes: docker-compose-v3-video-upload.yml
Настройте запись и загрузку видео для автономных ролей: docker-compose-v3-video-upload-standalone.yml
Настройте запись и загрузку видео для Dynamic Grid (node-docker): docker-compose-v3-video-upload-dynamic-grid.yml
Настройте запись и загрузку видео для автономной системы Dynamic Grid (standalone-docker):tests/docker-compose-v3-test-standalone-docker.yaml.
Переменная среды | Значение по умолчанию | Описание |
---|---|---|
SE_UPLOAD_RETAIN_LOCAL_FILE | false | Сохранять локальный файл после успешной загрузки |
SE_UPLOAD_COMMAND | copy | Команда RCLONE используется для передачи файла. Принудительное move , если сохранение локального файла имеет значение false |
SE_UPLOAD_OPTS | -P --cutoff-mode SOFT --metadata --inplace | Могут быть установлены и другие параметры, относящиеся к команде RCLONE. |
SE_UPLOAD_CONFIG_FILE_NAME | upload.conf | Файл конфигурации для удаленного хоста вместо установки через префикс переменной env SE_RCLONE_* |
SE_UPLOAD_CONFIG_DIRECTORY | /opt/bin | Каталог файла конфигурации (измените его, если файл конфигурации установлен в другом каталоге) |
Grid 4 имеет возможность запускать контейнеры Docker по требованию. Это означает, что он запускает контейнер Docker в фоновом режиме для каждого нового запроса сеанса, там выполняется тест, а когда тест завершается, контейнер выбрасывается.
Этот режим выполнения можно использовать как в роли Автономный, так и в роли узла. «Динамическому» режиму выполнения необходимо указать, какие образы Docker использовать при запуске контейнеров. Кроме того, Grid должен знать URI демона Docker. Эту конфигурацию можно поместить в локальный файл toml
.
Вы можете сохранить этот файл локально и назвать его, например, config.toml
.
[ docker ]
# Configs have a mapping between the Docker image to use and the capabilities that need to be matched to
# start a container with the given image.
configs = [
" selenium/standalone-firefox:4.26.0-20241101 " , ' {"browserName": "firefox"} ' ,
" selenium/standalone-chrome:4.26.0-20241101 " , ' {"browserName": "chrome"} ' ,
" selenium/standalone-edge:4.26.0-20241101 " , ' {"browserName": "MicrosoftEdge"} '
]
host-config-keys = [ " Dns " , " DnsOptions " , " DnsSearch " , " ExtraHosts " , " Binds " ]
# URL for connecting to the docker daemon
# Most simple approach, leave it as http://127.0.0.1:2375, and mount /var/run/docker.sock.
# 127.0.0.1 is used because internally the container uses socat when /var/run/docker.sock is mounted
# If var/run/docker.sock is not mounted:
# Windows: make sure Docker Desktop exposes the daemon via tcp, and use http://host.docker.internal:2375.
# macOS: install socat and run the following command, socat -4 TCP-LISTEN:2375,fork UNIX-CONNECT:/var/run/docker.sock,
# then use http://host.docker.internal:2375.
# Linux: varies from machine to machine, please mount /var/run/docker.sock. If this does not work, please create an issue.
url = " http://127.0.0.1:2375 "
# Docker image used for video recording
video-image = " selenium/video:ffmpeg-7.1-20241101 "
# Uncomment the following section if you are running the node on a separate VM
# Fill out the placeholders with appr