Le projet est rendu possible grâce à des contributeurs bénévoles qui ont consacré des milliers d'heures de leur temps et ont rendu le code source librement disponible sous la licence Apache 2.0.
Ces images Docker sont accompagnées d'une poignée de balises pour simplifier leur utilisation, jetez-y un œil dans l'une de nos versions.
Pour recevoir des notifications sur les nouvelles versions, ajoutez-vous en tant qu'observateur « Versions uniquement ».
Ces images sont publiées dans le registre Docker Hub sur Selenium Docker Hub.
Avez-vous besoin d'aide pour utiliser ces images Docker ? Parlez-nous à 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-20241101Pointez vos tests WebDriver vers http://localhost:4444
C'est ça!
(Facultatif) Pour voir ce qui se passe à l'intérieur du conteneur, accédez à http://localhost:7900/?autoconnect=1&resize=scale&password=secret.
Pour plus de détails sur la visualisation de l'activité du conteneur, consultez la section Débogage.
☝️ Lors de l'exécution docker run pour une image contenant un navigateur, veuillez utiliser l'indicateur --shm-size=2g pour utiliser la mémoire partagée de l'hôte.
☝️ Utilisez toujours une image Docker avec une balise complète pour épingler un navigateur et une version de Grid spécifiques. Voir Conventions de balisage pour plus de détails.
À partir de la balise d'image basée sur 4.21.0 , les architectures prises en charge par ce projet sont les suivantes :
| Architecture | Disponible |
|---|---|
| x86_64 (alias amd64) | ✅ |
| aarch64 (alias arm64/armv8) | ✅ |
| armhf (alias arm32/armv7l) | ❌ |
Les navigateurs suivants sont disponibles dans les images multi-arch :
| Architecture | Chrome | Chrome | Firefox | Bord |
|---|---|---|---|---|
| x86_64 (alias amd64) | ✅ | ✅ | ✅ | ✅ |
| aarch64 (alias arm64/armv8) | ❌ | ✅ | ✅ | ❌ |
| armhf (alias arm32/armv7l) | ❌ | ❌ | ❌ | ❌ |
Note:
Google ne crée pas Chrome ( google-chrome ) pour les plates-formes Linux/ARM. Par conséquent, les images Chrome (nœud et autonome) ne sont disponibles que pour AMD64. De même, Microsoft ne crée pas Edge ( microsoft-edge ) pour les plates-formes Linux/ARM.
L'exécution d'une image AMD64 sous émulation sur une plateforme ARM64 n'est pas recommandée en raison de problèmes de performances et de stabilité.
Pour Linux/ARM, utilisez le navigateur open source Chromium. Les images Chromium (nœud et autonome) sont disponibles en multi-arch.
$ docker run --rm -it -p 4444:4444 -p 5900:5900 -p 7900:7900 --shm-size 2g selenium/standalone-chromium:latestLes images multi-archs sont testées sur CircleCI avec la classe de ressources Linux/ARM64. Voir le statut ci-dessous.
Pour les images expérimentales de conteneurs Docker, qui s'exécutent sur des plates-formes telles que la série Apple M ou Raspberry Pi, le référentiel seleniumhq-community/docker-seleniarm a fourni des images qui sont publiées dans le registre Seleniarm Docker Hub.
Voir le numéro 1076 pour plus d'informations sur ces images.
Maintenant, le fork seleniumhq-community/docker-seleniarm a été fusionné.
Nous vous recommandons d'activer le magasin d'images de conteneur de fonctionnalités expérimentales dans Docker Engine. containerd comprend les images multiplateformes, où une seule balise d'image peut faire référence à différentes variantes couvrant une gamme d'architectures de système d'exploitation et de matériel. Il simplifie le processus de création, de stockage et de distribution d'images sur différentes plates-formes.
Une seule commande pour activer cette fonctionnalité dans Docker Engine :
make set_containerd_image_storePour créer toutes les images multiplateformes, exécutez la commande suivante :
PLATFORMS=linux/amd64,linux/arm64 make buildPour créer les images pour une plate-forme spécifique, exécutez la commande suivante :
PLATFORMS=linux/arm64 make build Par défaut, sans spécifier la variable PLATFORMS , les images sont construites pour la plateforme linux/amd64 .
Les images nocturnes sont construites sur la version Nightly du projet en amont Selenium avec les dernières modifications sur la branche principale de ce référentiel. La balise d'image est nightly . Il n'est pas recommandé d'utiliser des images en production. C'est uniquement à des fins de test.
$ docker run -d -p 4442-4444:4442-4444 --name selenium-hub selenium/hub:nightlyConsultez le docker compose pour démarrer avec les images nocturnes docker-compose-v3-full-grid-nightly.yml
Pour exécuter des tests ou travailler avec des navigateurs en version préliminaire, Google, Mozilla et Microsoft maintiennent un canal de version Dev et Beta pour ceux qui ont besoin de voir ce qui sera bientôt publié auprès du grand public.
Voici les instructions pour les exécuter en mode autonome :
Chrome bêta :
$ docker run --rm -it -p 4444:4444 -p 7900:7900 --shm-size 2g selenium/standalone-chrome:betaDéveloppeur Chrome :
$ docker run --rm -it -p 4444:4444 -p 7900:7900 --shm-size 2g selenium/standalone-chrome:devFirefox bêta :
$ docker run --rm -it -p 4444:4444 -p 7900:7900 --shm-size 2g selenium/standalone-firefox:betaDéveloppeur Firefox :
$ docker run --rm -it -p 4444:4444 -p 7900:7900 --shm-size 2g selenium/standalone-firefox:devBêta Edge :
$ docker run --rm -it -p 4444:4444 -p 7900:7900 --shm-size 2g selenium/standalone-edge:betaDéveloppeur Edge :
$ docker run --rm -it -p 4444:4444 -p 7900:7900 --shm-size 2g selenium/standalone-edge:devdocker-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 "Pour plus d'informations sur les images de conteneurs des canaux Dev et Beta, consultez le billet de blog sur les navigateurs des canaux Dev et Beta via Docker Selenium.
Firefox
docker run -d -p 4444:4444 --shm-size= " 2g " selenium/standalone-firefox:4.26.0-20241101Chrome
docker run -d -p 4444:4444 --shm-size= " 2g " selenium/standalone-chrome:4.26.0-20241101Bord
docker run -d -p 4444:4444 --shm-size= " 2g " selenium/standalone-edge:4.26.0-20241101 Remarque : Un seul conteneur autonome peut s'exécuter sur le port 4444 en même temps.
Il existe différentes manières d'exécuter les images et de créer une grille avec un hub et des nœuds, vérifiez les options suivantes.
Le Hub et les Nodes seront créés dans le même réseau et ils se reconnaîtront par leur nom de conteneur. Un réseau Docker doit être créé dans un premier temps.
$ 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 - 20241101Lorsque vous avez fini d'utiliser la grille et que les conteneurs sont sortis, le réseau peut être supprimé avec la commande suivante :
# Removes the grid network
$ docker network rm gridLe Hub et les nœuds seront créés sur différentes machines/VM, ils doivent connaître les adresses IP de chacun pour communiquer correctement. Si plusieurs nœuds doivent être exécutés sur la même machine/machine virtuelle, ils doivent être configurés pour exposer différents ports.
$ 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 est le moyen le plus simple de démarrer une grille. Utilisez les ressources liées ci-dessous, enregistrez-les localement et vérifiez les instructions d'exécution en haut de chaque fichier.
docker-compose-v2.yml
docker-compose-v3.yml
Pour arrêter la grille et nettoyer les conteneurs créés, exécutez docker compose down .
docker-compose-v3-swarm.yml
Il est possible de démarrer une grille Selenium avec tous ses composants séparés. Par souci de simplicité, seul un exemple avec docker compose sera fourni. Enregistrez le fichier localement et vérifiez les instructions d'exécution par-dessus.
docker-compose-v3-full-grid.yml
| Variable d'environnement | Option | Taper | Valeur par défaut | Description |
|---|---|---|---|---|
SE_REJECT_UNSUPPORTED_CAPS | --reject-unsupported-caps | booléen | false | Autoriser le distributeur à rejeter immédiatement une demande si la grille ne prend pas en charge la fonctionnalité demandée. |
SE_HEALTHCHECK_INTERVAL | --healthcheck-interval | int | 120 | Cela garantit que le serveur peut envoyer une requête ping à tous les nœuds avec succès après un intervalle. |
L’exécution des tests peut être enregistrée à l’aide de l’image Docker selenium/video:ffmpeg-7.1-20241101 . Un conteneur est nécessaire pour chaque conteneur sur lequel un navigateur est exécuté. Cela signifie que si vous exécutez 5 nœuds/conteneurs autonomes, vous aurez besoin de 5 conteneurs vidéo, le mappage est 1-1.
Actuellement, la seule façon d'effectuer ce mappage est manuellement (soit en démarrant les conteneurs manuellement, soit via docker compose ). Nous répétons ce processus et cette configuration sera probablement plus simple à l'avenir.
L'image Docker vidéo que nous fournissons est basée sur l'image ffmpeg Ubuntu fournie par le projet jrottenberg/ffmpeg, merci d'avoir fourni cette image et de simplifier notre travail ?
À partir de la balise d'image basée sur 4.20.0 , l'image Docker vidéo est basée sur l'image FFmpeg Ubuntu fournie par le projet linuxserver/docker-ffmpeg puisque l'image est disponible pour plusieurs plates-formes. Merci d'avoir simplifié notre projet et de nous avoir aidés à avancer avec un support d'architecture multiple.
Remarques :
/videos à l'intérieur du conteneur vidéo. Mappez un répertoire local pour obtenir les vidéos.FILE_NAME pour éviter des résultats inattendus.Cet exemple montre comment démarrer les conteneurs manuellement :
$ 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 Une fois les conteneurs arrêtés et supprimés, vous devriez voir un fichier vidéo dans le répertoire /tmp/videos de votre machine.
Voici un exemple utilisant un Hub et quelques nœuds :
docker-compose-v3-video.yml
Basé sur la prise en charge des métadonnées dans les tests. Lorsque l'enregistreur vidéo est déployé en side-car avec le nœud du navigateur en activant SE_VIDEO_FILE_NAME=auto et en ajoutant des métadonnées à vos tests, le nom du fichier vidéo extraira la valeur de la capacité se:name et l'utilisera comme nom de fichier vidéo.
Par exemple dans la liaison 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 () Le nom du fichier vidéo de sortie sera test_visit_basic_auth_secured_page_ChromeTests_<sessionId>.mp4 .
Si le nom de votre test est géré par le framework de test et qu'il est unique, vous pouvez également désactiver l'identifiant de session ajouté au nom du fichier vidéo en définissant SE_VIDEO_FILE_NAME_SUFFIX=false .
Le nom du fichier sera réduit à 255 caractères pour éviter les noms de fichiers longs. De plus, le caractère space sera remplacé par _ et seuls les caractères alphabets, chiffres, - (trait d'union), _ (trait de soulignement) sont conservés dans le nom du fichier.
L'expression régulière de trim peut être personnalisée en définissant la variable d'environnement SE_VIDEO_FILE_NAME_TRIM_REGEX . La valeur par défaut est [:alnum:]-_ . L'expression régulière doit être compatible avec la commande tr dans bash.
Au niveau du déploiement, le conteneur de l'enregistreur est toujours actif. De plus, vous pouvez désactiver le processus d'enregistrement vidéo via la fonctionnalité de session se:recordVideo . Par exemple dans la liaison Python :
options . set_capability ( 'se:recordVideo' , False ) Dans le conteneur de l'enregistreur, il effectuera une requête GraphQL dans Hub en fonction du Node SessionId et extraira la valeur de se:recordVideo dans les capacités avant de décider de démarrer ou non le processus d'enregistrement vidéo.
Remarques : Pour atteindre le point de terminaison GraphQL, le conteneur de l'enregistreur doit connaître l'URL du Hub. L'URL du Hub peut être transmise via la variable d'environnement SE_NODE_GRID_URL . Par exemple, SE_NODE_GRID_URL est http://selenium-hub:4444 .
RCLONE est installé dans l'image du magnétoscope. Vous pouvez l'utiliser pour télécharger les vidéos sur un service de stockage cloud. Outre l'enregistrement vidéo mentionné ci-dessus, vous pouvez activer la fonctionnalité de téléchargement en définissant les variables d'environnement suivantes :
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 utilisera l'identifiant de session comme nom de fichier vidéo. Cela garantit que le nom du fichier vidéo est unique à télécharger. La construction du nom de fichier vidéo fonctionne automatiquement en fonction du point de terminaison /status du nœud (et du point de terminaison GraphQL facultatif) pour obtenir l'ID de session et les capacités.
SE_VIDEO_UPLOAD_ENABLED=true activera la fonction de téléchargement vidéo. En arrière-plan, il créera un fichier pipe avec le fichier et la destination que le téléchargeur pourra consommer et poursuivre.
SE_VIDEO_INTERNAL_UPLOAD=true utilisera RCLONE installé dans le conteneur pour le téléchargement. Si vous souhaitez utiliser un autre conteneur side-car pour le téléchargement, définissez-le sur false .
| Variables ENV par mode | Concentrateur/nœuds | Rôles autonomes | Grille dynamique |
|---|---|---|---|
SE_VIDEO_RECORD_STANDALONE (obligatoire) | false (par défaut) | true | true |
DISPLAY_CONTAINER_NAME (obligatoire) | entrée de l'utilisateur | entrée de l'utilisateur | (pas obligatoire) |
SE_NODE_PORT (facultatif) | 5555 | 4444 | (pas obligatoire) |
SE_NODE_GRID_URL (facultatif) | entrée de l'utilisateur | (pas obligatoire) | (pas obligatoire) |
Pour les variables d'environnement avec le préfixe RCLONE_ il est utilisé pour transmettre la configuration à distance à RCLONE. Vous pouvez trouver plus d'informations sur la configuration de RCLONE ici. Lors de l'utilisation dans Dynamic Grid, ces variables doivent être combinées avec le préfixe SE_ , par exemple SE_RCLONE_ . Voir la référence ci-dessous pour plus de détails.
Configurer l'enregistrement et le téléchargement vidéo pour Hub et Nodes : docker-compose-v3-video-upload.yml
Configurer l'enregistrement et le téléchargement vidéo pour les rôles autonomes : docker-compose-v3-video-upload-standalone.yml
Configurer l'enregistrement et le téléchargement vidéo pour Dynamic Grid (node-docker) : docker-compose-v3-video-upload-dynamic-grid.yml
Configurer l'enregistrement et le téléchargement vidéo pour Dynamic Grid autonome (standalone-docker) : tests/docker-compose-v3-test-standalone-docker.yaml
| Variable d'environnement | Valeur par défaut | Description |
|---|---|---|
SE_UPLOAD_RETAIN_LOCAL_FILE | false | Conserver le fichier local après le téléchargement réussi |
SE_UPLOAD_COMMAND | copy | La commande RCLONE est utilisée pour transférer le fichier. Appliquer move lorsque la conservation du fichier local est false |
SE_UPLOAD_OPTS | -P --cutoff-mode SOFT --metadata --inplace | D'autres options appartiennent à la commande RCLONE et peuvent être définies. |
SE_UPLOAD_CONFIG_FILE_NAME | upload.conf | Fichier de configuration pour l'hôte distant au lieu d'être défini via le préfixe de variable d'environnement SE_RCLONE_* |
SE_UPLOAD_CONFIG_DIRECTORY | /opt/bin | Répertoire du fichier de configuration (modifiez-le lorsque le fichier de configuration dans un autre répertoire est monté) |
Grid 4 a la capacité de démarrer des conteneurs Docker à la demande, cela signifie qu'il démarre un conteneur Docker en arrière-plan pour chaque nouvelle demande de session, le test y est exécuté et une fois le test terminé, le conteneur est jeté.
Ce mode d'exécution peut être utilisé dans les rôles Autonome ou Noeud. Le mode d'exécution "dynamique" doit savoir quelles images Docker utiliser au démarrage des conteneurs. De plus, Grid doit connaître l’URI du démon Docker. Cette configuration peut être placée dans un fichier toml local.
Vous pouvez enregistrer ce fichier localement et le nommer, par exemple, 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