Chaque année , des ingénieurs en automatisation de test du monde entier recherchent les derniers outils et techniques pour rendre leur environnement d'automatisation de test plus stable, plus rapide et plus facile à utiliser et à entretenir. Ceci est vital pour s'assurer que leurs cadres sont mis en œuvre à grande échelle à tout moment dans leur entreprise. Quoi qu'il en soit, les cadres obsolètes gonflés sont rapidement démodés.
Selenium Grid est connu pour être difficile à configurer, instable et difficile à déployer et / ou à contrôler la version dans un pipeline CI. Un moyen plus simple, plus stable et plus pratique consiste à utiliser les images Selenium Docker prédéfinies.
Remarque : le seul inconvénient de cette méthode est qu'elle n'est pas prise en charge par IE (Internet Explorer), car le système d'exploitation Windows ne peut actuellement pas être placé dans un conteneur.
Préparation au travail
Pour commencer, vous devez d'abord installer Docker et Docker Compose sur votre ordinateur. Si vous utilisez Windows 10 ou Mac, les deux seront installés à l'aide de Docker Desktop .
Faire fonctionner votre grille
Le référentiel officiel Selenium Docker Hub contient des images Docker prédéfinies pour vos nœuds Selenium Hub, Firefox et Chrome.
Le moyen le plus simple de les utiliser dans votre Selenium Grid local consiste à créer un fichier Docker Compose dans le répertoire racine de votre projet. Nommez simplement le fichier
docker-compose.yml
.
J'ai inclus un exemple ci-dessous qui crée la grille suivante:
- Un hub Selenium
- Un nœud Chrome
- Un nœud Firefox
#docker-compose.yml
version: "3"
services:
selenium-hub:
image: selenium/hub:3.141.59-neon
container_name: selenium-hub
ports:
- "4444:4444"
chrome:
image: selenium/node-chrome:3.141.59-neon
volumes:
- /dev/shm:/dev/shm
depends_on:
- selenium-hub
environment:
- HUB_HOST=selenium-hub
- HUB_PORT=4444
firefox:
image: selenium/node-firefox:3.141.59-neon
volumes:
- /dev/shm:/dev/shm
depends_on:
- selenium-hub
environment:
- HUB_HOST=selenium-hub
- HUB_PORT=4444
Le fichier Docker Compose décrit comment configurer votre Grid. Pour plus d'informations sur la création de fichiers Docker Compose, consultez la documentation officielle .
Pour démarrer votre Grid, utilisez simplement n'importe quel terminal (
PowerShell
ou cmd
sous Windows), dans lequel exécutez la commande suivante à partir du répertoire racine de votre projet:
docker-compose up
Connexion au réseau
Vous pouvez vous connecter à votre Selenium Grid de la même manière que d'habitude, puisque le Hub écoute sur le port 4444 de votre machine locale. Voici un exemple où nous avons configuré notre pilote pour utiliser notre nœud Chrome.
// Driver.java
protected static RemoteWebDriver browser;
DesiredCapabilities cap = new DesiredCapabilities();
ChromeOptions chromeOptions = new ChromeOptions();
cap.setCapability(ChromeOptions.CAPABILITY, chromeOptions);
cap.setBrowserName("chrome");
driver = new RemoteWebDriver(cap);
Ensuite, vous pouvez utiliser la bibliothèque TestNG pour exécuter des tests sur plusieurs nœuds en parallèle comme d'habitude.
Il est à noter que plusieurs navigateurs peuvent être lancés sur chaque nœud. Cependant, cela n'est pas recommandé et l'utilisation d'un navigateur par nœud est considérée comme la meilleure pratique pour des performances optimales.
Trucs et astuces supplémentaires
Si vous voulez voir ce qui se passe dans le navigateur afin de déboguer vos tests, il vaut la peine d'avoir une
debug
version de votre docker-compose.yml
fichier qui charge les debug
nœuds du navigateur . Ils contiennent un serveur VNC, vous pouvez donc regarder le navigateur pendant l'exécution du test.
Il est également possible d'exécuter des navigateurs sans tête pour augmenter la vitesse (de la manière habituelle), et Selenium fournit également des
base
versions des images, afin que vous puissiez créer vos propres images si vous avez besoin d'installer un logiciel supplémentaire.
Vous pouvez également déployer votre Grid sur Kubernetes ou Swarm pour créer une Grid stable pour votre pipeline CI . Cela garantit une récupération ou un remplacement rapide des dockers en cas de panne.
Lire la suite:
- Selenium: 1 — 2
- Selenium: 3 — 5