Selenium Grid-Tutorial: Hub und Knoten einrichten

โšก Intelligente Zusammenfassung

Selenium Grid fรผhrt mithilfe einer Hub-Node-Architektur parallel mehrere Tests auf verschiedenen Browsern, Betriebssystemen und Rechnern aus. Der Hub lรคdt die Tests auf einem Rechner, wรคhrend die Nodes sie auf anderen ausfรผhren. Dies ermรถglicht eine schnellere browserรผbergreifende Testabdeckung durch Konfiguration รผber die Kommandozeile oder JSON.

  • ๐Ÿงฉ Raster definiert: Fรผhrt Tests parallel รผber einen Hub und Knoten auf verschiedenen Browsern, Betriebssystemen und Rechnern aus.
  • ๐ŸŽฏ Hub: Die einzige zentrale Maschine, auf der die Lasttests durchgefรผhrt werden; nur ein Hub pro Grid.
  • ๏ธ Nodes: Eine oder mehrere Maschinen, die die Tests auf verschiedenen Plattformen ausfรผhren.
  • โš™๏ธ Fahrwerks-Konfiguration: Starten Sie die Selenium Server-JAR mit den Rollen -role hub und -role node oder Verwendung einer JSON-Konfigurationsdatei.
  • ๐Ÿงช Testskripte: Verwenden Sie DesiredCapabilities und RemoteWebDriver, um einen Browser, ein Betriebssystem und einen Knotenpunkt als Ziel festzulegen.
  • ๏ธ Wann zu verwenden: Umfassende Browser-Betriebssystem-Kompatibilitรคtsprรผfungen und schnellere parallele Testreihenausfรผhrung.

Selenium Grid-Tutorial

Was ist Selenium Netz?

Selenium Gitter Ist ein Teil der Selenium Suite, die darauf spezialisiert ist, mehrere Tests parallel รผber verschiedene Browser, Betriebssysteme und Rechner auszufรผhren. 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 ausfรผhren zu kรถnnen.

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

Hub

  • 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 Selenium Server von werden auf dieser Seite erlรคutert.

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 Grid. Die folgenden 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 zur 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 eine oder beide der folgenden Aktionen ausfรผhren mรถchten:

  • Fรผhren Sie Ihre Tests gleichzeitig mit verschiedenen Browsern, Betriebssystemen und Computern aus. Dadurch wird sichergestellt, dass die Anwendung, die Sie benรถtigen Tests 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

Nachfolgend 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 der 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 der 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 Objektnotation. Dies ist ein Standardformat fรผr den Datenaustausch zwischen Browser und Webserver. Selenium verfรผgt รผber eine integrierte JSON-Konfigurationsdatei, die zum Einrichten des Selenium-Grids verwendet werden kann.

Nachfolgend finden Sie die Schritte zum Konfigurieren des Selenium-Grids mithilfe einer 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 Ihren Webbrowser und versuchen Sie, eine Verbindung zu folgendem herzustellen: URL

http://192.168.43.223:4444/grid/console

Anmerkungen: Das URL kann von Maschine zu Maschine variieren. URL AnschlieรŸend muss auf dem obigen Bildschirm die Option โ€žKnoten sollten sich registrierenโ€œ 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 des 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 SELENIUM 3.0 ODER Hร–HER VERWENDEN, MUSS DIE FOLGENDE 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 auf der Grid-Konsole angezeigt. So kรถnnen wir sicher sein, dass die Knoten erfolgreich konfiguriert wurden.

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 = "https://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 URL im 'Basisverzeichnis' angegebenURLDie Variable รผberprรผfte, ob auf der Seite ein Link mit dem Namen โ€žMobile Testingโ€œ angezeigt wird.

URL auf dem KnotenURLDie Variable kann so angepasst werden, dass sie die IP-Adresse des Remote-Rechners widerspiegelt. Das Testergebnis kann auf dem Standardrechner รผberprรผft werden. TestNG Bericht erstellt

Hรคufig gestellte Fragen

Der Hub ist die zentrale Maschine, auf der die Tests geladen und das Grid verwaltet werden. Die Nodes sind die Maschinen, die die Tests auf bestimmten Browser- und Betriebssystemkombinationen ausfรผhren. Ein Grid besteht aus einem Hub und einem oder mehreren Nodes.

Grid 1 verwendet eine separate Fernbedienung und benรถtigt Apache Ant, das nur unterstรผtzt Selenium RC-Skripte und ein Browser pro Steuerelement. Grid 2 ist im Lieferumfang enthalten. Selenium Server-JAR, benรถtigt kein Ant und unterstรผtzt sowohl RC- als auch WebDriver-Skripte.

Erstellen Sie ein DesiredCapabilities-Objekt, legen Sie dessen Browsernamen und Plattform fest und รผbergeben Sie es anschlieรŸend an einen RemoteWebDriver, der auf den Knoten verweist. URLDas Grid leitet den Test an einen passenden Knoten fรผr diesen Browser und dieses Betriebssystem weiter.

KI kann Testlรคufe priorisieren und parallelisieren, fehlerhafte Tests vorhersagen, die Last auf die Knoten verteilen und defekte Locatoren selbst reparieren. Dies reduziert die Ausfรผhrungszeit und den Wartungsaufwand in groรŸen Systemen mit vielen Browser-Betriebssystem-Kombinationen.

Ja. KI-Tools kรถnnen optimale Knotenanzahlen empfehlen, JSON-Konfigurationen generieren, Cloud-Grids basierend auf der Warteschlangenlรคnge automatisch skalieren und ungenutzte Kapazitรคt erkennen.ping Teams betreiben groรŸe Suiten effizient ohne manuelle Anpassungen.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: