Mise en place d'une grille de sélénium pour les tests de sélénium distribués

Ce blog vous aidera à comprendre le besoin de Selenium Grid et ses avantages. Lisez-le pour configurer votre première grille Selenium en configurant le hub et les nœuds.

Les autres blogs de cette série de tutoriels Selenium parlent de la création de cas de test et de l'exécution de ces cas de test en séquence et en parallèle. Ainsi, la dernière technique à discuter est l'exécution de cas de test sur des machines distantes. Selenium Grid peut être utilisé pour exécuter ces tests sur des machines / hôtes distants. C’est donc le sujet de discussion du blog d’aujourd’hui.



  1. Pourquoi et quand utiliser Selenium Grid?
  2. Qu'est-ce que Selenium Grid?
  3. Grille sélénium 1 contre grille sélénium 2
  4. Architecture de la grille de sélénium
  5. Construire une grille de sélénium

Pourquoi et quand utiliser Selenium Grid?

Il y a tellement de navigateurs Web qui sont utilisés aujourd'hui. Les utilisateurs peuvent utiliser Chrome ou Firefox ou Safari ou Opera ou même Internet Explorer pour lire ce blog. Ils peuvent utiliser différentes versions des navigateurs. Ils peuvent également exécuter ces navigateurs sur n'importe quel système d'exploitation, que ce soit Windows ou Mac ou Ubuntu ou toute autre distribution de Linux.



Et si les utilisateurs voyaient quelque chose d'important sur Internet? Quelque chose d'important pour votre entreprise. Ne voudriez-vous pas faire un effort supplémentaire (tester l'application Web) simplement pour vous assurer que vos utilisateurs et / ou clients bénéficient de la meilleure expérience utilisateur? Vous le feriez, non?

Bien tu devrais!



Mais la question est de savoir dans quelle mesure est-ce faisable? Serez-vous en mesure de passer du temps à tester votre application Web sur tous les systèmes d'exploitation possibles et tous les navigateurs Web disponibles? Hmm, cela ressemble un peu à un défi. C'est là que Selenium Grid fait l'affaire et aide économisez votre temps et votre énergie.

En plus de cela, une autre question se pose: est-il viable de mettre en place une infrastructure de réseau Selenium en utilisant des systèmes locaux? Maintenir une grille avec tous les navigateurs et systèmes d'exploitation requis est un défi. Pour cela, il existe plusieurs plates-formes en ligne qui fournissent une grille de sélénium en ligne à laquelle vous pouvez accéder pour exécuter vos scripts d'automatisation de sélénium. Par exemple, vous pouvez utiliser LambdaTest . Il dispose de plus de 2000 environnements de navigateur sur lesquels vous pouvez exécuter vos tests et effectuer des tests véritablement automatisés entre les navigateurs.

Qu'est-ce que la grille de sélénium?

Selenium Grid est un autre outil important de la suite d'outils Selenium. Grid est capable de coordonner les tests WebDriver / tests RC qui peuvent s'exécuter simultanément sur plusieurs navigateurs Web ou peuvent être lancés sur différents systèmes d'exploitation ou même hébergés sur différentes machines.



fonctionnement de la grille - grille de séléniumAlors, comment ça marche? Grid utilise une architecture Hub-Node où, il y a un Hub, qui agit en tant que maître et un ou plusieurs nœuds agissant en tant qu'esclaves.

Cela signifie que si vous avez un total de 100 travaux / tests à exécuter, les tests peuvent être exécutés simultanément sur 5 machines, où chaque machine exécutera 20 tests. En fait, vous pouvez exécuter ces tests dans différentes combinaisons de systèmes d'exploitation et de navigateurs. Chaque machine ici peut être d'un OS différent et à l'intérieur de chaque OS, les tests peuvent être effectués sur différents navigateurs.

Cet acte permettrait facilement d'économiser beaucoup de temps lors de l'exécution des tests. Si vous considérez l'exemple ci-dessus, nous pouvons réduire le temps d'exécution à environ 1/5 du temps total nécessaire pour exécuter les tests sur une seule machine.

Si vous vous souvenez de mes blogs précédents, j'ai mentionné un nombre incalculable de fois que Grid faisait partie du projet Selenium depuis sa création, c'est-à-dire depuis Selenium v1. Selenium Grid faisait également partie de Selenium v2 et fait actuellement partie de Selenium v3. Il n'y a pas beaucoup de différence entre les v2 et v3 de la grille de sélénium. Cependant, la v1 a beaucoup de différences comparativement. Alors, allons-y comprendre les différences entre v1 et v2.

Grille sélénium 1 contre grille sélénium 2

La différence fondamentale entre Grid v1.0 et v2.0 est que RC a été utilisé dans Grid 1 et WebDriver a été utilisé dans Grid 2. Le tableau ci-dessous explique les différences en détail.

Grille 1 Grille 2
Nécessite l'installation d'Apache AntL'installation d'Apache Ant n'est pas requise
Possède sa propre télécommande (ceci est différent du serveur RC)Fourni avec le fichier jar Selenium Server
Prend en charge uniquement les commandes Selenium RCPrend en charge les scripts Selenium RC et WebDriver
Vous ne pouvez automatiser qu'un seul navigateur par télécommandeVous pouvez automatiser jusqu'à 5 navigateurs par télécommande


Maintenant que nous avons appris les différences fondamentales entre les deux versions, plongeons-nous dans Selenium Grid .

Architecture de la grille de sélénium

Comme je l'ai mentionné précédemment, Grid fonctionne sur la base d'un concentrateur et de plusieurs nœuds. Mais que sont Hub et Nodes et que font-ils?

Le Hub

Dans n'importe quelle configuration Grid, il ne peut y avoir qu'un seul Hub et ce sera le point central de cette configuration Grid. Tous les tests à exécuter doivent être chargés ici. Malgré les tests chargés ici, ils ne seront exécutés qu'au niveau des nœuds. Nous pouvons configurer n'importe quelle machine hôte pour qu'elle soit notre Hub, et il coordonnera les activités d'exécution des tests dans d'autres hôtes.

Pour que cela se produise, nous devons d'abord configurer le concentrateur, puis faire en sorte que d'autres nœuds s'enregistrent sur le concentrateur. Avant d'entrer dans trop de détails, permettez-moi de vous montrer la commande pour configurer le Hub.

Configuration du hub

Vous devez tout d'abord télécharger le fichier JAR du serveur Selenium depuis le site Web de Seleniumhq. Le lien est Ici . Vous devez également vous assurer que Java est installé sur votre système et que les variables d'environnement sont définies.

différence entre aws et azur

Une fois que vous avez téléchargé le fichier jar, vous devez le placer dans un répertoire approprié. Pour ma commodité, je l'ai téléchargé et placé dans le dossier Selenium de C Drive. Il est recommandé de télécharger également le fichier jar et de le placer dans un répertoire similaire dans tous les autres nœuds.

Pour configurer le hub, vous devez exécuter la commande dans l'invite de commande Windows. La commande est présente dans l'extrait ci-dessous.

C: UsersVardhan> cd .. C: Users> cd .. C:> cd Selenium C: Selenium> java -jar selenium-server-standalone-3.4.0.jar -role hub

La selenium-server-standalone-3.4.0.jar est le nom du fichier jar que j'ai téléchargé.
La -rôle L'indicateur est utilisé pour définir cette machine hôte particulière en tant que concentrateur. Lorsque vous appuyez sur Entrée, vous obtiendrez la sortie ci-dessous sur votre écran.

Si vous n'avez pas remarqué la capture d'écran ci-dessus, revoyez-la. Ça dit ' -Les nœuds doivent s'enregistrer sur http://192.168.0.11:4444/grid/register «. Maintenant que le concentrateur est configuré, nous devons configurer les nœuds et les connecter à ce concentrateur.

192.168.0.11 est l'adresse IP du concentrateur et chaque nœud doit se connecter à cette adresse IP. 4444 est le numéro de port par défaut sur lequel Selenium Grid est hébergé et écoute les demandes. Si un autre service fonctionne sur le port 4444 et que vous souhaitez que Selenium Grid soit hébergé sur un autre port, vous pouvez le faire en spécifiant le -Port drapeau suivi du numéro de port.

Les nœuds

Les nœuds sont les machines hôtes sur lesquelles les tests sont exécutés. Ces tests seront lancés par le Hub. Le hub peut lancer un ou plusieurs nœuds sur des machines distantes ou sur la même machine où se trouve le hub lui-même. Sur chacun des nœuds, différents systèmes d'exploitation peuvent être démarrés, et sur différents systèmes d'exploitation, différentes versions du même navigateur ou différents navigateurs peuvent être lancées.

Configuration des nœuds

Semblable au Hub, vous devez d'abord télécharger le fichier Jar dans les machines Node et le placer sur le lecteur C ou tout autre répertoire commun pour votre commodité. Vous pouvez ensuite exécuter la commande ci-dessous dans l'invite de commande Windows. Si vous lancez même le nœud sur la même machine que votre concentrateur, vous devez exécuter la commande en démarrant une autre invite de commande.

java -Dwebdriver.chrome.driver = E: chromedriver.exe -jar selenium-server-standalone-3.4.0.jar -role node -hub http://192.168.0.11:4444/grid/register

Il y a juste quelques différences dans cette commande par rapport à la commande nécessaire pour démarrer le Hub.
-Dwebdriver.chrome.driver = E: chromedriver.exe est utilisé pour définir le chemin du pilote de navigateur. Semblable à la définition du chemin du pilote de navigateur dans votre code WebDriver, vous le spécifiez ici afin de permettre au Node d'effectuer des tests. À partir de Selenium v3, vous devez télécharger le navigateur de pilotes pour Firefox. Le pilote du navigateur pour Firefox est le pilote Gecko. Cependant, dans les versions 1 et 2, vous devez définir le pilote de navigateur pour tous les navigateurs autres que Firefox.
nœud -role L'indicateur est utilisé pour définir cette machine hôte particulière en tant que nœud.
-hub http://192.168.0.11:4444/grid/register informe le nœud de se connecter au concentrateur en utilisant l'adresse IP du concentrateur. Un point important à noter est que si vous lancez un Node sur la même machine que votre Hub, vous pouvez spécifier ' -hub http: // localhost: 4444 / grille / registre ‘Dans la commande au lieu de l’adresse IP du concentrateur.

comment faire de la puissance en java

Lorsque vous appuyez sur Entrée, vous obtiendrez la sortie ci-dessous sur l'invite de commande.

À présent, le nœud aurait été connecté au concentrateur. Vous pouvez le vérifier en retournant à l’invite de commande utilisée pour démarrer le Hub et vous remarquerez le message suivant: « A enregistré un nœud http://192.168.0.11:5555 «.

L'adresse IP et le numéro de port sont ceux de votre Node. Comme j'ai mon Node sur la même machine que mon Hub, le port utilisé pour le Node est 5555. Lorsque vous l'initiez sur une autre machine, le port par défaut sera utilisé.

Lorsque vous lancez l'URL suivante sur la machine de votre Hub, vous obtiendrez l'état des nœuds connectés à votre Hub. Voir la partie en surbrillance dans la capture d'écran ci-dessous.

Maintenant que votre Selenium Grid est configuré, vous pouvez procéder à l'exécution de scripts de test sur Nodes. Permettez-moi de souligner à nouveau que nous devons exécuter des scripts dans notre Hub et qu'ils seront exécutés dans nos nœuds. Le script utilisé pour exécuter les tests est similaire à WebDriver des tests.

Construire une grille de sélénium

J'ai exécuté mon script dans Eclipse IDE. L'exécution de ce script repose sur deux packages de bibliothèques importants. Elles sont Capacités souhaitées objet et RemoteWebDriver objet.

DesiredCapabilities est utilisé pour définir le type de navigateur et le système d'exploitation de notre nœud. Pour importer l'objet DesiredCapabilities, utilisez le code ci-dessous.

import org.openqa.selenium.remote.DesiredCapabilities

RemoteWebDriver est utilisé pour sélectionner le nœud sur lequel nous voulons exécuter le test. Pour importer un objet RemoteWebDriver, utilisez les lignes de code ci-dessous.

import java.net.MalformedURLException import java.net.URL import org.openqa.selenium.remote.RemoteWebDriver

J'ai importé ces deux packages avec le package d'annotations TestNG pour mon script, comme indiqué dans l'extrait de code ci-dessous. J'ai importé des annotations TestNG car je l'ai exécuté en tant que test TestNG pour lequel un rapport détaillé sera généré. Je vous recommande d'importer le même ensemble de packages pour votre code.

Lorsque vous manœuvrez sur les logos de n'importe quel navigateur présent dans la console Selenium Hub, vous obtiendrez des détails comme le browserName et le Plate-forme du nœud que vous souhaitez automatiser. L'image indique également le nombre d'instances des navigateurs que je peux ouvrir dans mon Node. Je peux configurer au maximum 5 instances Chrome, 5 Firefox et 1 Internet Explorer. Ces détails sont présents dans la capture d'écran ci-dessous.

Vous pouvez utiliser le code dans l'extrait de code ci-dessous pour configurer votre première grille.

package GridTest import org.testng.annotations.AfterTest import org.testng.annotations.BeforeTest import org.testng.annotations.Test import java.net.MalformedURLException import java.net.URL import org.junit.Assert import org.openqa.selenium .Platform import org.openqa.selenium.WebDriver import org.openqa.selenium.remote.DesiredCapabilities import org.openqa.selenium.remote.RemoteWebDriver public class TestGrid {statique pilote WebDriver static String nodeUrl @BeforeTest public void setup () throws MalformedURCE nodeUrl = 'http://192.168.0.11:5555/wd/hub' DesiredCapabilities capabilities = DesiredCapabilities.chrome () capabilities.setBrowserName ('chrome') capabilities.setPlatform (Platform.WINDOWS) driver = nouveau RemoteWebDriver (nouvelle URL (nodeUrl ), capacités)} @Test public void simpleTest () Edureka ', driver.getTitle ()) @AfterTest public void afterTest () {driver.quit ()}}

J'ai divisé l'ensemble du script de test en trois annotations de test. @BeforeTest, @Test et @AfterTest. Dans @BeforeTest, j'ai utilisé les objets DesiredCapablities et RemoteWebDriver pour configurer mon Node. Dans @Test, j'ai demandé au Node d'accéder à la page d'accueil d'Edureka et d'affirmer le titre de la page. Dans @AfterTest, j'ai demandé au Node de quitter l'instance de navigateur.

Lorsque votre test réussit l'exécution, vous obtiendrez la sortie ci-dessous.

18 mai 2017 15:09:07 org.openqa.selenium.remote.ProtocolHandshake createSession INFO: Dialecte détecté: OSS PASSED: simpleTest ====================== ========================== Test par défaut Tests exécutés: 1, échecs: 0, sauts: 0 ========== ====================================== ============= ================================== Suite par défaut Nombre total de tests exécutés: 1, échecs: 0, sauts: 0 = ==============================================

Puisqu'il s'agit d'un test TestNG, vous obtiendrez un rapport de test détaillé similaire à la capture d'écran ci-dessous.

Si vous ne savez pas ce qu'est TestNG et comment utiliser les annotations de test, lisez mon blog pour savoir comment utiliser Selenium WebDriver avec TestNG de cette série de didacticiels Selenium.

Vous pouvez voir la vidéo ci-dessous pour assister à une démonstration de la façon de construire une grille de sélénium. L'instructeur livrant la vidéo explique les mêmes concepts expliqués dans ce blog.

Tutoriel Selenium Grid pour les débutants | Tutoriel Selenium | Edureka

Donc, cela nous amène à la fin de ce blog Selenium Grid. Si vous avez des doutes ou des problèmes avec le code / contenu de cette série de blogs, veuillez les laisser dans la section commentaires ci-dessous et je résoudrai votre problème au plus tôt.

Si vous souhaitez apprendre Selenium et bâtir une carrière dans le domaine des tests, consultez notre site interactif en ligne ici, cela vient avec un support 24 * 7 pour vous guider tout au long de votre période d'apprentissage.

Vous avez une question pour nous? Veuillez le mentionner dans la section commentaires et nous vous recontacterons.