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: