Selenium Grid-Tutorial: Einrichten eines Hubs und Knotens (Beispiel)

Was ist Selenium Netz?

Selenium Gitter Ist ein Teil der Selenium Suite, die auf die Ausführung mehrerer Tests in verschiedenen Browsern spezialisiert ist, operating systeme und maschinen parallel. Dies wird erreicht, indem die Befehle von Remote-Browserinstanzen weitergeleitet werden, wobei ein Server als Hub fungiert. Ein Benutzer muss den Remote-Server konfigurieren, um die Tests auszuführen.

Selenium Grid hat zwei Versionen – die ältere Grid 2 und die neuere Grid 1. Wir werden uns nur auf Grid 2 konzentrieren, da Grid 2 nach und nach von der veraltet ist Selenium Mannschaft.

Selenium Gitter Architektur

Selenium Grid hat einen Hub und einen Knoten ArchiStruktur.

Selenium Gitter Architektur
Selenium Gitter Architektur

Nabe

  • Der Hub ist der zentrale Punkt, an dem Sie Ihre Tests laden.
  • Es sollte nur einen Hub in einem Raster geben.
  • Der Hub wird nur auf einer einzelnen Maschine gestartet, beispielsweise einem Computer, dessen Betriebssystem vorhanden ist Windows 7 und dessen Browser IE ist.
  • Auf dem Computer, der den Hub enthält, werden die Tests ausgeführt. Sie werden jedoch sehen, wie der Browser auf dem Knoten automatisiert wird.

Nodes

  • Knoten sind die Selenium Instanzen, die die Tests ausführen, die Sie auf den Hub geladen haben.
  • In einem Raster können ein oder mehrere Knoten vorhanden sein.
  • Knoten können auf mehreren Maschinen mit unterschiedlichen Plattformen und Browsern gestartet werden.
  • Die Maschinen, auf denen die Knoten laufen, müssen nicht dieselbe Plattform haben wie die des Hubs.

Selenium Grid verwendet ein Hub-Knoten-Konzept, bei dem Sie den Test nur auf einer einzelnen Maschine namens a ausführen Nabe, aber die Ausführung erfolgt durch verschiedene aufgerufene Maschinen Fiber Node

Wie stellt man das ein Selenium Netz?

In diesem Abschnitt verwenden Sie zwei Maschinen. Der erste Computer ist das System, auf dem der Hub ausgeführt wird, während auf dem anderen Computer ein Knoten ausgeführt wird. Der Einfachheit halber nennen wir die Maschine, auf der der Hub läuft, „Maschine A“, während die Maschine, auf der der Knoten läuft, „Maschine B“ ist. Es ist auch wichtig, ihre IP-Adressen zu notieren. Nehmen wir an, Maschine A hat die IP-Adresse 2, während Maschine B die IP-Adresse 192.168.1.3 hat.

Schritt 1) Laden Sie das Selenium Server von wenn sie hier klicken.

Aufbauen Selenium Gitter

Schritt 2) Sie können die platzieren Selenium Server-.jar-Datei irgendwo auf Ihrer Festplatte. Für dieses Tutorial legen Sie es jedoch auf dem Laufwerk C von Maschine A und Maschine B ab. Danach ist die Installation abgeschlossen Selenium Netz. Die folgendenwing Schritte starten den Hub und den Knoten.

Schritt 3)

  • Wir werden jetzt einen Hub starten. Gehen Sie zu Maschine A. Navigieren Sie über die Eingabeaufforderung zum Stammverzeichnis von Maschine A – Laufwerk C, denn das ist das Verzeichnis, in dem wir die Datei abgelegt haben Selenium Server.
  • Geben Sie an der Eingabeaufforderung Folgendes ein: Java-Jar selenium-server-standalone-2.30.0.jar -role hub
  • Der Hub sollte erfolgreich gestartet werden. Ihre Eingabeaufforderung sollte etwa wie im Bild unten aussehen.

Aufbauen Selenium Gitter

Schritt 4) Eine andere Möglichkeit, zu überprüfen, ob der Hub ausgeführt wird, ist die Verwendung eines Browsers. Selenium Grid verwendet standardmäßig den Port 4444 von Maschine A für seine Webschnittstelle. Öffnen Sie einfach einen Browser und gehen Sie zu http://localhost:4444/grid/console

Aufbauen Selenium Gitter

Außerdem können Sie überprüfen, ob Maschine B auf die Weboberfläche des Hubs zugreifen kann, indem Sie dort einen Browser starten und zu „iporhostnameofmachineA“ gehen, wo die IP-Adresse oder der Hostname des Computers stehen sollte, auf dem der Hub läuft. Da die IP-Adresse von Maschine A 192.168.1.3 lautet, sollten Sie im Browser von Maschine B Folgendes eingeben: http://192.168.1.3:4444/grid/console

Schritt 5)

  • Da der Hub nun bereits eingerichtet ist, werden wir einen Knoten starten. Gehen Sie zu Maschine B und starten Sie dort eine Eingabeaufforderung.
  • Navigieren Sie zum Stammverzeichnis von Laufwerk C und geben Sie den folgenden Code ein. Wir haben die IP-Adresse 192.168.1.3 verwendet, da dort der Hub läuft. Wir haben auch Port 5566 verwendet, Sie können jedoch jede beliebige freie Portnummer wählen.
  • HINWEIS: Bei Verwendung müssen Sie jetzt den Pfad zum Gecko-Treiber angeben Firefox. Hier ist aktualisierter Code, der verwendet werden muss
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

Aufbauen Selenium Gitter

  • Wenn Sie die Eingabetaste drücken, sollte Ihre Eingabeaufforderung der Abbildung unten ähneln.

Aufbauen Selenium Gitter

Schritt 6) Gehen Sie zum Selenium Rastern Sie die Weboberfläche und aktualisieren Sie die Seite. Sie sollten so etwas sehen.

Aufbauen Selenium Gitter

Zu diesem Zeitpunkt haben Sie bereits ein einfaches Raster konfiguriert. Sie sind jetzt bereit, einen Test remote auf Maschine B durchzuführen.

Wann zu verwenden Selenium Netz?

Du solltest benutzen Selenium Raster, wenn Sie einen oder beide der folgenden Schritte ausführen möchtenwing:

  • Führen Sie Ihre Tests mit verschiedenen Browsern durch. operatingsysteme und Maschinen gleichzeitig. Dadurch wird sichergestellt, dass die Anwendung, die Sie benötigen Testen ist vollständig kompatibel mit einer Vielzahl von Browser-Betriebssystem-Kombinationen.
  • Sparen Sie Zeit bei der Ausführung Ihrer Testsuiten. Wenn Sie es einrichten Selenium Wenn Sie Grid beispielsweise vier Tests gleichzeitig ausführen lassen, könnten Sie die gesamte Suite etwa viermal schneller fertigstellen.

Grid 1.0 vs. Grid 2.0

Following sind die Hauptunterschiede zwischen Selenium Gitter 1 und 2.

Raster 1 Raster 2
Selenium Grid 1 verfügt über eine eigene Fernbedienung, die sich von der unterscheidet Selenium RC-Server. Es sind zwei verschiedene Programme. Selenium Grid 2 ist jetzt im Lieferumfang enthalten Selenium Server-JAR-Datei
Sie müssen installieren und konfigurieren Apache Ant zuerst, bevor Sie Grid 1 verwenden können. Sie müssen Apache Ant nicht in Grid 2 installieren.
Kann nur unterstützen Selenium RC-Befehle/Skripte. Kann beides unterstützen Selenium RC- und WebDriver-Skripte.
Sie können nur einen Browser pro Fernbedienung automatisieren. Eine Fernbedienung kann bis zu 5 Browser automatisieren.

Selenium Das Raster kann auf zwei verschiedene Arten eingerichtet werden; eine über die Befehlszeile und die andere über die JSON-Konfigurationsdatei.

Entwerfen von Testskripten, die im Grid ausgeführt werden können

Um Testskripte zu entwerfen, die im Raster ausgeführt werden, müssen wir Folgendes verwenden Gewünschte Fähigkeiten und für RemoteWebDriver Objekte.

  • Gewünschte Fähigkeiten wird verwendet, um den Typ festzulegen Browser und OS dass wir automatisieren werden.
  • RemoteWebDriver wird verwendet, um festzulegen, auf welchem ​​Knoten (oder welcher Maschine) unser Test ausgeführt wird.

So verwenden Sie die Gewünschte Fähigkeiten Um ein Objekt zu erstellen, müssen Sie dieses Paket zunächst importieren

Entwerfen von Testskripten, die im Raster ausgeführt werden können

So verwenden Sie die RemoteWebDriver Objekt, müssen Sie diese Pakete importieren.

Entwerfen von Testskripten, die im Grid ausgeführt werden können

Verwenden des DesiredCapabilites-Objekts

Gehen Sie zur Weboberfläche des Grids und bewegen Sie den Mauszeiger auf ein Bild des Browsers, den Sie automatisieren möchten. Beachten Sie die Plattform, und für Browsername wird im Tooltip angezeigt.

Verwenden des DesiredCapabilites-Objekts

In diesem Fall ist die Plattform „XP“ und der Browsername ist „Firefox"

Wir verwenden die Plattform und den Browsernamen in unserem WebDriver wie unten gezeigt (natürlich müssen Sie zuerst die erforderlichen Pakete importieren).

Verwenden des DesiredCapabilites-Objekts

Verwenden des RemoteWebDriver-Objekts

Importieren Sie die erforderlichen Pakete für RemoteWebDriver und übergeben Sie dann das DesiredCapabilities-Objekt, das wir oben erstellt haben, als Parameter für das RemoteWebDriver-Objekt.

Verwenden des RemoteWebDriver-Objekts

Ausführen eines Beispieltestfalls im Grid

Unten ist ein einfacher WebDriver Testng Code, den Sie erstellen können Eclipse auf Maschine A. Sobald Sie es ausführen, wird die Automatisierung auf Maschine B durchgeführt.

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()); } 
} 

Der Test sollte bestehen.

Ausführen eines Beispieltestfalls auf dem Gride Ausführen eines Beispieltestfalls auf dem Gride

Selenium Rasterkonfiguration mithilfe einer JSON-Datei

JSON steht für Javascript Object Notation. Es handelt sich um ein Standardformat, das für den Datenaustausch zwischen Browser und Webserver verwendet wird. Selenium verfügt über eine integrierte JSON-Konfigurationsdatei, die zum Einrichten verwendet werden kann selenium Gitter.

Nachfolgend finden Sie die Schritte zur Konfiguration selenium Raster mithilfe der JSON-Konfigurationsdatei.

Schritt 1) Laden Sie den Code für die JSON-Konfigurationsdatei über den folgenden Pfad herunter

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

Hier ist der 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
}

Schritt 2) Kopieren Sie den Code und fügen Sie ihn mit der Erweiterung „.json“ in einen Texteditor wie Notepad ein.

Schritt 3)Starten Sie den Hub mit dem folgenden Befehl über die Eingabeaufforderung

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

Anmerkungen: Selenium Die eigenständige JAR-Datei und die JSON-Datei müssen im selben Verzeichnis vorhanden sein

Schritt 4) Der folgende Bildschirm wird angezeigt und zeigt an, dass der Hub erfolgreich eingerichtet wurde

Selenium Rasterkonfiguration mithilfe einer JSON-Datei

Schritt 5) Öffnen Sie den Webbrowser und versuchen Sie, eine Verbindung zur folgenden URL herzustellen

http://192.168.43.223:4444/grid/console

Anmerkungen: Die URL kann von Maschine zu Maschine unterschiedlich sein. Es muss die URL gefolgt von „Knoten sollen sich registrieren bei“ auf dem obigen Bildschirm verwendet werden.

Schritt 6) Der Bildschirm der Grid-Konsole wird angezeigt, der anzeigt, dass der Hub betriebsbereit ist

Selenium Rasterkonfiguration mithilfe einer JSON-Datei

Konfigurieren Sie NODES mit JSON

Schritt 1) Laden Sie die Beispielknotenkonfigurationsdatei herunter, die von bereitgestellt wird Selenium unter Verwendung der untenstehenden URL

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

Anmerkungen: WENN SIE VERWENDEN SELENIUM 3.0 ODER HÖHER MUSS DIE UNTENSTEHENDE JSON-DATEI VERWENDET WERDEN

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

Schritt 2) Kopieren Sie den Code, fügen Sie ihn in einen Texteditor wie Notepad ein und speichern Sie die Datei mit der Erweiterung „.json“.

Schritt 3)

Führen Sie den folgenden Befehl an der Eingabeaufforderung aus

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

Anmerkungen: Bevor Sie den Befehl ausführen, stellen Sie bitte sicher, dass die Treiber für jeden Browser in das lokale Maschinenverzeichnis heruntergeladen wurden

Schritt 4) Der folgende Bildschirm erscheint, wenn die Eingabetaste gedrückt wird

Konfigurieren Sie Knoten mit JSON

Schritt 5) Navigieren Sie zur Grid-Konsole, um zu überprüfen, ob die Knoten erfolgreich konfiguriert wurden

Konfigurieren Sie Knoten mit JSON

Die Browser werden angezeigtyed auf der Rasterkonsole. Daher können wir sicher sein, dass die Knoten erfolgreich konfiguriert werden.

Beispieltestfälle ein Selenium Gitter:

 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");
         }

     }

 }

Der obige Code startet den Chrome-Browser und navigiert zu der in der Variablen „baseURL“ angegebenen URL. Es wurde überprüft, dass der Linkname „Mobile Testing“ angezeigt wirdyed auf der Seite

Die URL der Variable „nodeURL“ kann geändert werden, um die IP-Adresse des Remote-Computers widerzuspiegeln. Das Testergebnis kann standardmäßig überprüft werden TestNG Bericht erstellt

Zusammenfassung

  • Selenium Grid wird verwendet, um mehrere Tests gleichzeitig auszuführenneoNormalerweise auf verschiedenen Browsern und Plattformen.
  • Grid verwendet das Hub-Knoten-Konzept.
  • Der Hub ist der zentrale Punkt, an dem Sie Ihre Tests laden.
  • Knoten sind die Selenium Instanzen, die die Tests ausführen, die Sie auf den Hub geladen haben.
  • So installieren Sie Selenium Grid, Sie müssen nur das herunterladen Selenium Server-JAR-Datei – dieselbe Datei, die beim Ausführen verwendet wird Selenium RC-Tests.
  • Es gibt zwei Möglichkeiten, um zu überprüfen, ob der Hub ausgeführt wird: zum einen über die Eingabeaufforderung und zum anderen über einen Browser.
  • Um Testskripte im Grid auszuführen, sollten Sie die Objekte DesiredCapabilities und RemoteWebDriver verwenden.
  • DesiredCapabilites wird verwendet, um den Browsertyp und das Betriebssystem festzulegen, die wir automatisieren werden.
  • RemoteWebDriver wird verwendet, um festzulegen, auf welchem ​​Knoten (oder welcher Maschine) unser Test ausgeführt wird.