Aller au contenu
SDETRole
SDETRole

Glossaire · Automatisation de l’UI

Selenium Grid

Également appelé : Selenium Grid 4, grille Selenium

Définition

Serveur Selenium qui route les sessions WebDriver vers des nœuds distants, pour exécuter les tests en parallèle sur de nombreux navigateurs, versions et machines.

Selenium Grid permet à un test de créer son navigateur ailleurs. Le test utilise RemoteWebDriver et le fait pointer vers l’URL de la Grid ; la Grid trouve un nœud disposant du navigateur demandé (par exemple Chrome sous Linux), y démarre une session et relaie chaque commande. Comme de nombreux nœuds peuvent servir des sessions en même temps, Grid est la solution classique pour exécuter une suite Selenium en parallèle et sur plusieurs navigateurs.

Exemple

Démarrez une Grid sur une seule machine avec l’image Docker officielle :

docker run -d -p 4444:4444 --shm-size="2g" selenium/standalone-chrome

Puis connectez-vous depuis un test (Selenium 4, Java 21) :

ChromeOptions options = new ChromeOptions();
WebDriver driver = new RemoteWebDriver(
    URI.create("http://localhost:4444").toURL(), options);

driver.get("https://example.com");

Les options du navigateur sont les « capabilities » que la Grid compare à ses nœuds. L’interface de la Grid, sur http://localhost:4444, affiche les nœuds, les slots et les sessions en cours.

Son architecture (Grid 4)

Selenium Grid 4 peut fonctionner selon trois modes :

  • Standalone : tout dans un seul processus, idéal en local et pour les petits jobs de CI.
  • Hub et nœuds : un hub reçoit les sessions et plusieurs nœuds exécutent les navigateurs. Démarrez avec java -jar selenium-server-<version>.jar hub et ... node.
  • Entièrement distribué : les composants internes du hub (Router, Distributor, Session Map, New Session Queue, Event Bus) tournent dans des processus séparés, ce qui convient bien à Kubernetes.

Grid 4 a aussi rendu inutile l’ancien chemin /wd/hub, même s’il l’accepte encore.

Erreurs fréquentes

  • Attendre de la Grid qu’elle parallélise les tests. La Grid fournit des navigateurs. Votre test runner (JUnit 5, TestNG) doit toujours être configuré pour exécuter les tests en parallèle, et les tests doivent être isolés.
  • Plus de threads que de slots. Les demandes de session en trop sont mises en file d’attente et peuvent expirer. Alignez le parallélisme du runner sur les slots disponibles.
  • Ne pas fermer les drivers. Un driver.quit() manquant laisse des sessions occuper des slots jusqu’à leur expiration.
  • Mémoire partagée trop petite dans Docker. Chrome plante avec le /dev/shm par défaut du conteneur, d’où l’option --shm-size.

Les services cloud hébergés exposent le même endpoint WebDriver qu’une Grid : le code RemoteWebDriver est identique, seuls l’URL et les capabilities changent.

Saisissez un terme pour rechercher sur SDETRole.

Recherche plein texte par Pagefind · s’exécute dans votre navigateur Ouvrir la page de recherche →