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.

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.

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.
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.
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
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
- Wenn Sie die Eingabetaste drรผcken, sollte Ihre Eingabeaufforderung der Abbildung unten รคhneln.
Schritt 6) Gehen Sie zur Selenium Rastern Sie die Weboberflรคche und aktualisieren Sie die Seite. Sie sollten so etwas sehen.
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
So verwenden Sie die RemoteWebDriver Objekt, mรผssen Sie diese Pakete importieren.
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.
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 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.
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.
![]() |
![]() |
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
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
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
Konfigurieren Sie NODES mit JSON
Schritt 1) Laden Sie die Beispielknotenkonfigurationsdatei herunter, die von bereitgestellt wird Selenium unter Verwendung des untenstehenden URL
Anmerkungen: WENN SIE SELENIUM 3.0 ODER HรHER VERWENDEN, MUSS DIE FOLGENDE JSON-DATEI VERWENDET WERDEN
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
Schritt 5) Navigieren Sie zur Grid-Konsole, um zu รผberprรผfen, ob die Knoten erfolgreich konfiguriert wurden
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







.png)






