Tutoriel Selenium Grid : configurer un hub et un nœud (exemple)

Qu'est-ce que Selenium Grid?

Grille de sélénium fait partie de la suite Selenium spécialisée dans l'exécution de plusieurs tests en parallèle sur différents navigateurs, systèmes d'exploitation et machines. Ceci est réalisé en acheminant les commandes des instances de navigateur distantes où un serveur agit comme un hub. Un utilisateur doit configurer le serveur distant pour exécuter les tests.

Selenium Grid a 2 versions : l'ancienne Grid 1 et la plus récente Grid 2. Nous nous concentrerons uniquement sur la Grid 2 car la Grid 1 est progressivement obsolète par l'équipe Selenium.

Architecture de grille de sélénium

Selenium Grid a une architecture Hub et Node.

Architecture de grille de sélénium
Architecture de grille de sélénium

Moyeu

  • Le hub est le point central dans lequel vous chargez vos tests.
  • Il ne devrait y avoir qu’un seul hub dans une grille.
  • Le hub est lancé uniquement sur une seule machine, par exemple un ordinateur dont le système d'exploitation est Windows 7 et dont le navigateur est IE.
  • La machine contenant le hub est l'endroit où les tests seront exécutés, mais vous verrez le navigateur être automatisé sur le nœud.

Nodes

  • Les nœuds sont les instances Selenium qui exécuteront les tests que vous avez chargés sur le hub.
  • Il peut y avoir un ou plusieurs nœuds dans une grille.
  • Les nœuds peuvent être lancés sur plusieurs machines avec différentes plates-formes et navigateurs.
  • Les machines exécutant les nœuds ne doivent pas nécessairement avoir la même plate-forme que celle du hub.

Selenium Grid utilise un concept de nœud hub dans lequel vous exécutez le test uniquement sur une seule machine appelée moyeu, mais l'exécution sera effectuée par différentes machines appelées nœuds

Comment configurer la grille Selenium ?

Dans cette section, vous utiliserez 2 machines. La première machine sera le système qui exécutera le hub tandis que l'autre machine exécutera un nœud. Pour plus de simplicité, appelons la machine sur laquelle le hub s'exécute comme « Machine A », tandis que la machine sur laquelle s'exécute le nœud sera « Machine B ». Il est également important de noter leurs adresses IP. Disons que la machine A a une adresse IP de 192.168.1.3 tandis que la machine B a une adresse IP de 192.168.1.4.

Étape 1) Téléchargez le serveur Selenium depuis ici.

Configurer la grille Selenium

Étape 2) Vous pouvez placer le fichier .jar de Selenium Server n'importe où sur votre disque dur. Mais pour les besoins de ce didacticiel, placez-le sur le lecteur C de la machine A et de la machine B. Après cela, vous avez maintenant terminé d'installer Selenium Grid. Le suiviwing Les étapes lanceront le hub et le nœud.

Étape 3)

  • Nous allons maintenant lancer un hub. Accédez à la machine A. À l’aide de l’invite de commande, accédez à la racine du lecteur – C de la machine A, car c’est le répertoire dans lequel nous avons placé le serveur Selenium.
  • À l'invite de commande, tapez java -jar sélénium-server-standalone-2.30.0.jar -role hub
  • Le hub devrait être lancé avec succès. Votre invite de commande devrait ressembler à l’image ci-dessous.

Configurer la grille Selenium

Étape 4) Une autre façon de vérifier si le hub est en cours d'exécution consiste à utiliser un navigateur. Selenium Grid, par défaut, utilise le port 4444 de la machine A pour son interface Web. Ouvrez simplement un navigateur et accédez à http://localhost:4444/grid/console

Configurer la grille Selenium

Vous pouvez également vérifier si la machine B peut accéder à l'interface Web du hub en y lançant un navigateur et en allant là où « iporhostnameofmachineA » doit être l'adresse IP ou le nom d'hôte de la machine sur laquelle le hub est exécuté. Puisque l'adresse IP de la machine A est 192.168.1.3, alors dans le navigateur de la machine B, vous devez taper http://192.168.1.3:4444/grid/console

Étape 5)

  • Maintenant que le hub est déjà configuré, nous allons lancer un nœud. Accédez à la machine B et lancez-y une invite de commande.
  • Accédez à la racine du lecteur C et tapez le code ci-dessous. Nous avons utilisé l'adresse IP 192.168.1.3 car c'est là que s'exécute le hub. Nous avons également utilisé le port 5566, mais vous pouvez choisir le numéro de port gratuit de votre choix.
  • REMARQUE : Vous devez maintenant indiquer le chemin d'accès au pilote Gecko si vous utilisez Firefox. Voici le code mis à jour qui doit être utilisé
java -Dwebdriver.gecko.driver="C:\geckodriver.exe" -jar selenium-server-standalone-3.4.0.jar -role webdriver -hub http://192.168.1.3:4444/grid/register -port 5566

Configurer la grille Selenium

  • Lorsque vous appuyez sur Entrée, votre invite de commande doit être similaire à l'image ci-dessous.

Configurer la grille Selenium

Étape 6) Accédez à l'interface Web de Selenium Grid et actualisez la page. Vous devriez voir quelque chose comme ça.

Configurer la grille Selenium

À ce stade, vous avez déjà configuré une grille simple. Vous êtes maintenant prêt à exécuter un test à distance sur la machine B.

Quand utiliser Selenium Grid ?

Vous devez utiliser Selenium Grid lorsque vous souhaitez effectuer l'une ou les deux opérations suivantes.wing:

  • Exécutez vos tests sur différents navigateurs, systèmes d'exploitation et machines en même temps. Cela garantira que l'application que vous utilisez Essais est entièrement compatible avec une large gamme de combinaisons navigateur-OS.
  • Gagnez du temps dans l’exécution de vos suites de tests. Si vous configurez Selenium Grid pour exécuter, disons, 4 tests à la fois, vous pourrez alors terminer l'ensemble de la suite environ 4 fois plus rapidement.

Grille 1.0 contre grille 2.0

Following sont les principales différences entre Selenium Grid 1 et 2.

Grille 1 Grille 2
Selenium Grid 1 possède sa propre télécommande différente du serveur Selenium RC. Ce sont deux programmes différents. Selenium Grid 2 est désormais fourni avec le fichier jar Selenium Server
Vous devez installer et configurer Apache Ant d'abord avant de pouvoir utiliser la grille 1. Vous n'avez pas besoin d'installer Apache Ant dans Grid 2.
Ne peut prendre en charge que les commandes/scripts Selenium RC. Peut prendre en charge les scripts Selenium RC et WebDriver.
Vous ne pouvez automatiser qu'un seul navigateur par télécommande. Une télécommande peut automatiser jusqu'à 5 navigateurs.

La grille Selenium peut être configurée de deux manières différentes ; l'un via la ligne de commande et l'autre via le fichier de configuration JSON.

Conception de scripts de test pouvant s'exécuter sur la grille

Pour concevoir des scripts de test qui s'exécuteront sur la grille, nous devons utiliser Capacités souhaitées les nouveautés RemoteWebDriver objets.

  • Capacités souhaitées est utilisé pour définir le type de navigateur et OS que nous allons automatiser.
  • RemoteWebDriver est utilisé pour définir sur quel nœud (ou machine) notre test sera exécuté.

Pour utiliser la Capacités souhaitées objet, vous devez d'abord importer ce package

Conception de scripts de test pouvant s'exécuter sur la grille

Pour utiliser la RemoteWebDriver objet, vous devez importer ces packages.

Conception de scripts de test pouvant s'exécuter sur la grille

Utilisation de l'objet DesiredCapabilites

Accédez à l'interface Web de Grid et survolez une image du navigateur que vous souhaitez automatiser. Prenez note du Plate-forme, les nouveautés nom du navigateur montré par l’info-bulle.

Utilisation de l'objet DesiredCapabilites

Dans ce cas, la plateforme est « XP » et le nom du navigateur est « »Firefox. »

Nous utiliserons la plateforme et le nom du navigateur dans notre WebDriver comme indiqué ci-dessous (bien sûr, vous devez d'abord importer les packages nécessaires).

Utilisation de l'objet DesiredCapabilites

Utilisation de l'objet RemoteWebDriver

Importez les packages nécessaires pour RemoteWebDriver, puis transmettez l'objet DesiredCapabilities que nous avons créé ci-dessus en tant que paramètre pour l'objet RemoteWebDriver.

Utilisation de l'objet RemoteWebDriver

Exécution d'un exemple de scénario de test sur la grille

Vous trouverez ci-dessous un simple WebDriver Tester code que vous pouvez créer dans Eclipse sur la machine A. Une fois que vous l’aurez exécuté, l’automatisation sera effectuée sur la machine B.

import org.openqa.selenium.*; 
import org.openqa.selenium.remote.DesiredCapabilities; 
import java.net.MalformedURLException; 
import java.net.URL; 
import org.openqa.selenium.remote.RemoteWebDriver; 
import org.testng.Assert;
import org.testng.annotations.*; 

public class Grid_2 {
 WebDriver driver;
 String baseUrl, nodeURL; 
 @BeforeTest 
 public void setUpWthrows MalformedURLException {
 baseUrl = "http://newtours.demoaut.com/";
 nodeURL = "http://192.168.1.4:5566/wd/hub"; 
 DesiredCapabilities capability = DesiredCapabilities.firefox();
 capability. setBrowserName("firefox");
 capability. setPlatform(Platform.XP);
 driver = new RemoteWebDriver(new URL(nodeURL), capability); 
} 
@AfterTest 
public void afterTest() {
 driver.quit(); 
 }
@Test 
public void simpleTest() { 
driver.get(baseUr1);
 Assert.assertEquas("Welcome: Mercury Tours", driver.getTitle()); } 
} 

Le test devrait réussir.

Exécution d'un exemple de scénario de test sur Gride Exécution d'un exemple de scénario de test sur Gride

Configuration de la grille Selenium à l'aide du fichier JSON

JSON signifie Javascript Object Notation. Il s'agit d'un format standard utilisé pour l'échange de données entre le navigateur et le serveur Web. Selenium dispose d'un fichier de configuration JSON intégré qui peut être utilisé pour configurer la grille Selenium.

Vous trouverez ci-dessous les étapes pour configurer la grille Selenium à l'aide du fichier de configuration JSON.

Étape 1) Téléchargez le code du fichier de configuration JSON en utilisant le chemin ci-dessous

https://github.com/SeleniumHQ/selenium/blob/selenium-3.141.59/java/server/src/org/openqa/grid/common/defaults/DefaultHub.json

Voici le code

{
	  "port": 4444,
	  "newSessionWaitTimeout": -1,
	  "servlets" : [],
	  "withoutServlets": [],
	  "custom": {},
	  "capabilityMatcher": "org.openqa.grid.internal.utils.DefaultCapabilityMatcher",
	  "registryClass": "org.openqa.grid.internal.DefaultGridRegistry",
	  "throwOnCapabilityNotPresent": true,
	  "cleanUpCycle": 5000,
	  "role": "hub",
	  "debug": false,
	  "browserTimeout": 0,
	  "timeout": 1800
}

Étape 2) Copiez et collez le code sur un éditeur de texte tel que le Bloc-notes avec l'extension « .json »

Étape 3)Lancez le hub à l'aide de la commande ci-dessous à l'aide de l'invite de commande

java -jar selenium-server-standalone-2.53.1.jar -role hub -hubConfig hubconfig.json

REMARQUE: Le fichier jar autonome Selenium et le fichier json doivent être présents dans le même répertoire

Étape 4) L'écran ci-dessous apparaîtra, indiquant que le hub est configuré avec succès

Configuration de la grille Selenium à l'aide du fichier JSON

Étape 5) Ouvrez le navigateur Web et essayez de vous connecter à l'URL ci-dessous

http://192.168.43.223:4444/grid/console

REMARQUE: L'URL peut varier d'une machine à l'autre. L'URL suivie de « Les nœuds doivent s'inscrire sur » sur l'écran ci-dessus doit être utilisée.

Étape 6) L'écran Grid Console apparaîtra, indiquant que le hub est opérationnel

Configuration de la grille Selenium à l'aide du fichier JSON

Configurer NODES à l'aide de JSON

Étape 1) Téléchargez l'exemple de fichier de configuration de nœud fourni par Selenium en utilisant l'URL ci-dessous

https://github.com/SeleniumHQ/selenium/blob/selenium-2.53.0/java/server/src/org/openqa/grid/common/defaults/DefaultNode.json

REMARQUE: SI VOUS UTILISEZ SELENIUM 3.0 OU SUPÉRIEUR, LE FICHIER JSON CI-DESSOUS DOIT ÊTRE UTILISÉ

https://github.com/SeleniumHQ/selenium/blob/selenium-3.141.59/java/server/src/org/openqa/grid/common/defaults/DefaultNodeWebDriver.json

Étape 2) Copiez et collez le code dans un éditeur de texte tel que le Bloc-notes et enregistrez le fichier avec l'extension « .json ».

Étape 3)

Exécutez la commande ci-dessous à l'invite de commande

Java-Dwebdriver.chrome.driver="chromedriver.exe" -Dwebdriver.ie.driver="IEDriverServer.exe" -Dwebdriver.gecko.driver="geckodriver.exe" -jar selenium-server-standalone-2.53.1.jar -role node -nodeConfig node1.json

REMARQUE: Avant d'exécuter la commande, assurez-vous que les pilotes de chacun des navigateurs ont été téléchargés dans le répertoire de la machine locale.

Étape 4) L'écran ci-dessous apparaîtra lorsque la touche Entrée est enfoncée

Configurer les nœuds à l'aide de JSON

Étape 5) Accédez à la console de grille pour vérifier si les nœuds ont été configurés avec succès

Configurer les nœuds à l'aide de JSON

Les navigateurs sont affichés sur la console de grille. Nous pouvons donc être sûrs que les nœuds sont configurés avec succès.

Exemples de cas de test sur la grille Selenium :

 package com.objectrepository.demo;
 import org.openqa.selenium.*;
 import org.openqa.selenium.remote.DesiredCapabilities;
 import java.net.MalformedURLException;
 import java.net.URL;
 import org.openqa.selenium.remote.RemoteWebDriver;
 import org.testng.Assert;
 import org.testng.annotations.*;

 public class SeleniumGrid {

     WebDriver driver;
     String baseURL, nodeURL;

     @BeforeTest
     public void setUp() throws MalformedURLException {
         baseURL = "http://demo.guru99.com/test/guru99home/";
         nodeURL = "http://192.168.43.223:5566/wd/hub";
         DesiredCapabilities capability = DesiredCapabilities.chrome();
         capability.setBrowserName("chrome");
         capability.setPlatform(Platform.WIN10);
         driver = new RemoteWebDriver(new URL(nodeURL), capability);
     }

     @AfterTest
     public void afterTest() {
         driver.quit();
     }
     @Test
     public void sampleTest() {
         driver.get(baseURL);
         

         if (driver.getPageSource().contains("MOBILE TESTING")) {
             Assert.assertTrue(true, "Mobile Testing Link Found");
         } else {
             Assert.assertTrue(false, "Failed: Link not found");
         }

     }

 }

Le code ci-dessus lance le navigateur Chrome et accède à l'URL spécifiée dans la variable « baseURL ». Il a vérifié qu'un nom de lien « Mobile Testing » est affiché sur la page

L'URL de la variable 'nodeURL' peut être modifiée pour refléter l'adresse IP de la machine distante. Le résultat du test peut être vérifié sur le rapport TestNG par défaut généré

Résumé

  • Selenium Grid est utilisé pour exécuter plusieurs tests simultanémentneogénéralement sur différents navigateurs et plates-formes.
  • Grid utilise le concept hub-noeud.
  • Le hub est le point central où vous chargez vos tests.
  • Les nœuds sont les instances Selenium qui exécuteront les tests que vous avez chargés sur le hub.
  • Pour installer Selenium Grid, il vous suffit de télécharger le fichier jar Selenium Server – le même fichier utilisé lors de l’exécution des tests Selenium RC.
  • Il existe 2 façons de vérifier si le hub est en cours d'exécution : l'une via l'invite de commande et l'autre via un navigateur.
  • Pour exécuter des scripts de test sur la grille, vous devez utiliser les objets DesiredCapabilities et RemoteWebDriver.
  • DesiredCapabilites est utilisé pour définir le type de navigateur et de système d'exploitation que nous allons automatiser.
  • RemoteWebDriver est utilisé pour définir le nœud (ou la machine) sur lequel notre test s'exécutera.