Einrichten eines Selengitters für verteilte Selentests



Dieser Blog wird Ihnen helfen, die Notwendigkeit von Selenium Grid und seine Vorteile zu verstehen. Lesen Sie es, um Ihr erstes Selenium-Gitter einzurichten, indem Sie Hub & Knoten konfigurieren.

Die anderen Blogs in dieser Selenium-Lernserie befassen sich mit der Erstellung von Testfällen und der sequentiellen und parallelen Ausführung dieser Testfälle. Die letzte Technik, die zur Diskussion steht, ist die Ausführung von Testfällen auf Remote-Maschinen. Selenium Grid kann zur Ausführung dieser Tests auf Remote-Computern / Hosts verwendet werden. Daher ist dies das Diskussionsthema des heutigen Blogs.

  1. Warum und wann Selenium Grid verwenden?
  2. Was ist Selengitter?
  3. Selengitter 1 vs. Selengitter 2
  4. Architektur des Selengitters
  5. Aufbau eines Selengitters

Warum und wann Selenium Grid verwenden?

Es gibt so viele Webbrowser, die heute verwendet werden. Benutzer verwenden möglicherweise entweder Chrome oder Firefox oder Safari oder Opera oder sogar Internet Explorer, um genau diesen Blog zu lesen. Möglicherweise verwenden sie unterschiedliche Versionen der Browser. Sie können diese Browser auch auf jedem Betriebssystem ausführen, sei es Windows oder Mac oder Ubuntu oder einer anderen Linux-Distribution.





wie man in Java anhängt

Was wäre, wenn die Benutzer im Internet etwas Wichtiges sehen würden? Etwas Wichtiges für Ihr Unternehmen. Möchten Sie nicht noch einen Schritt weiter gehen (Testen der Web-App), um sicherzustellen, dass Ihre Benutzer und / oder Kunden die beste Benutzererfahrung erhalten? Sie würden, richtig?

Nun, du solltest!



Aber die Frage ist, wie machbar ist das? Können Sie Ihre Web-App auf jedem möglichen Betriebssystem und jedem verfügbaren Webbrowser testen? Hmm, das klingt nach einer Herausforderung. Hier passt Selenium Grid und hilftSparen Sie Zeit und Energie.

Darüber hinaus stellt sich eine weitere Frage: Ist es sinnvoll, eine Selen-Netzinfrastruktur mit lokalen Systemen einzurichten? Die Pflege eines Rasters mit allen erforderlichen Browsern und Betriebssystemen ist eine Herausforderung. Zu diesem Zweck gibt es mehrere Online-Plattformen, die ein Online-Selenium-Grid bereitstellen, auf das Sie zugreifen können, um Ihre Selenium-Automatisierungsskripte auszuführen. Zum Beispiel können Sie verwenden LambdaTest . Es verfügt über mehr als 2000 Browserumgebungen, in denen Sie Ihre Tests ausführen und Cross-Browser-Tests wirklich automatisieren können.

Was ist ein Selengitter?

Selenium Grid ist ein weiteres wichtiges Werkzeug in der Selenium-Werkzeugsuite. Grid ist in der Lage, WebDriver-Tests / RC-Tests zu koordinieren, die gleichzeitig auf mehreren Webbrowsern ausgeführt oder auf verschiedenen Betriebssystemen initiiert oder sogar auf verschiedenen Computern gehostet werden können.



Gitterarbeit - SelengitterWie funktioniert das? Grid verwendet eine Hub-Node-Architektur, bei der es einen Hub gibt, der als Master fungiert, und einen oder mehrere Knoten, die als Slaves fungieren.

Wenn Sie also insgesamt 100 Jobs / Tests ausführen müssen, können die Tests gleichzeitig auf 5 Computern ausgeführt werden, auf denen auf jedem Computer 20 Tests ausgeführt werden. Tatsächlich können Sie diese Tests in verschiedenen Kombinationen von Betriebssystemen und Browsern ausführen. Jeder Computer hier kann ein anderes Betriebssystem haben und innerhalb jedes Betriebssystems können die Tests in verschiedenen Browsern durchgeführt werden.

Dieser Vorgang würde leicht viel Zeit bei der Testausführung sparen. Wenn Sie das obige Beispiel betrachten, können wir die Ausführungszeit auf etwa 1/5 der Gesamtzeit reduzieren, die für die Ausführung von Tests auf einem einzelnen Computer benötigt wird.

Wenn Sie sich an meine vorherigen Blogs erinnern können, habe ich unzählige Male erwähnt, dass Grid seit seiner Gründung Teil des Selenium-Projekts war, d. H. Seit Selenium v1. Selenium Grid war auch Teil von Selenium v2 und ist derzeit Teil von Selenium v3. Es gibt keinen großen Unterschied zwischen v2 und v3 des Selenium-Gitters. V1 weist jedoch vergleichsweise viele Unterschiede auf. Also, lass unsVerstehe die Unterschiede zwischen v1 und v2.

Selengitter 1 vs. Selengitter 2

Der grundlegende Unterschied zwischen Grid v1.0 und v2.0 besteht darin, dass RC in Grid 1 und WebDriver in Grid 2 verwendet wurden. In der folgenden Tabelle werden die Unterschiede im Detail erläutert.

Gitter 1 Gitter 2
Erfordert die Installation von Apache AntEine Apache Ant-Installation ist nicht erforderlich
Hat eine eigene Fernbedienung (unterscheidet sich vom RC-Server)Im Lieferumfang der Selenium Server-JAR-Datei enthalten
Unterstützt nur Selenium RC-BefehleUnterstützt sowohl Selenium RC- als auch WebDriver-Skripte
Sie können nur einen Browser pro Fernbedienung automatisierenSie können bis zu 5 Browser pro Fernbedienung automatisieren


Nachdem wir die grundlegenden Unterschiede zwischen den beiden Versionen kennengelernt haben, wollen wir uns eingehend mit dem Selenium Grid befassen.

Architektur des Selengitters

Wie bereits erwähnt, funktioniert Grid auf der Basis eines Hubs und mehrerer Knoten. Aber was sind Hub und Nodes und was machen sie?

Der Hub

In jedem Grid-Setup kann es nur einen Hub geben, und dies ist der zentrale Punkt in diesem Grid-Setup. Alle Tests, die ausgeführt werden müssen, sollten hier geladen werden. Trotz der hier geladenen Tests werden sie nur an den Knoten ausgeführt. Wir können jeden Host-Computer als Hub konfigurieren und er koordiniert die Aktivitäten der Testausführung auf anderen Hosts.

Dazu müssen wir zuerst den Hub konfigurieren und dann andere Knoten für die Registrierung beim Hub einrichten. Bevor ich auf zu viele Details eingehe, möchte ich Ihnen den Befehl zum Konfigurieren des Hubs zeigen.

Hub konfigurieren

Sie müssen zunächst die JAR-Datei des Selenium-Servers von der Seleniumhq-Website herunterladen. Der Link ist Hier . Sie müssen auch sicherstellen, dass Java in Ihrem System installiert und die Umgebungsvariablen festgelegt sind.

Nachdem Sie die JAR-Datei heruntergeladen haben, müssen Sie sie in einem geeigneten Verzeichnis ablegen. Zur Vereinfachung habe ich es heruntergeladen und im Ordner Selenium in C Drive abgelegt. Es wird empfohlen, dass Sie auch die JAR-Datei herunterladen und in einem ähnlichen Verzeichnis auf allen anderen Knoten ablegen.

Um den Hub zu konfigurieren, müssen Sie den Befehl an der Windows-Eingabeaufforderung ausführen. Der Befehl ist im folgenden Snippet enthalten.

C: UsersVardhan> cd .. C: Users> cd .. C:> cd Selen C: Selen> Java-Jar Selen-Server-Standalone-3.4.0.jar-Rolle Hub

Das Selen-Server-Standalone-3.4.0.jar ist der Name der JAR-Datei, die ich heruntergeladen habe.
Das -Rolle Das Flag wird verwendet, um diesen bestimmten Hostcomputer als Hub festzulegen. Wenn Sie die Eingabetaste drücken, wird die folgende Ausgabe auf Ihrem Bildschirm angezeigt.

Falls Sie den obigen Screenshot nicht bemerkt haben, sehen Sie ihn erneut. Es sagt ' -Knoten sollten sich unter http://192.168.0.11:4444/grid/register registrieren „. Nachdem der Hub konfiguriert ist, müssen wir die Knoten einrichten und mit diesem Hub verbinden.

192.168.0.11 ist die IP-Adresse des Hubs, und jeder Knoten sollte eine Verbindung zu dieser IP-Adresse herstellen. 4444 ist die Standardportnummer, an der Selenium Grid gehostet wird und auf Anforderungen wartet. Wenn ein anderer Dienst auf Port 4444 ausgeführt wird und Sie möchten, dass Selenium Grid auf einem anderen Port gehostet wird, können Sie dies tun, indem Sie das angeben -Hafen Flag gefolgt von der Portnummer.

Die Knoten

Die Knoten sind die Hostcomputer, auf denen die Tests ausgeführt werden. Diese Tests werden vom Hub gestartet. Der Hub kann einen oder mehrere Knoten entweder auf Remotecomputern oder auf demselben Computer starten, auf dem sich der Hub selbst befindet. Auf jedem der Knoten können verschiedene Betriebssysteme gestartet werden, und auf verschiedenen Betriebssystemen können verschiedene Versionen desselben Browsers oder verschiedener Browser initiiert werden.

Konfigurieren der Knoten

Ähnlich wie beim Hub müssen Sie zuerst die Jar-Datei auf die Node-Computer herunterladen und auf dem C-Laufwerk oder einem anderen allgemeinen Verzeichnis ablegen. Sie können dann den folgenden Befehl an der Windows-Eingabeaufforderung ausführen. Wenn Sie sogar den Knoten auf demselben Computer wie Ihren Hub starten, müssen Sie den Befehl ausführen, indem Sie eine andere Eingabeaufforderung starten.

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

Dieser Befehl unterscheidet sich nur geringfügig von dem Befehl, der zum Starten des Hubs erforderlich ist.
-Dwebdriver.chrome.driver = E: chromedriver.exe wird verwendet, um den Pfad des Browsertreibers festzulegen. Ähnlich wie beim Festlegen des Pfads des Browsertreibers in Ihrem WebDriver-Code geben Sie ihn hier an, damit der Knoten Tests ausführen kann. Ab Selenium v3 müssen Sie den Treiberbrowser für Firefox herunterladen. Der Browsertreiber für Firefox ist der Gecko-Treiber. In den Versionen 1 und 2 müssen Sie jedoch den Browsertreiber für alle Browser außer Firefox festlegen.
-Rollknoten Das Flag wird verwendet, um diesen bestimmten Hostcomputer als Knoten festzulegen.
-hub http://192.168.0.11:4444/grid/register informiert den Knoten über die IP-Adresse des Hubs, eine Verbindung zum Hub herzustellen. Ein wichtiger Punkt ist, dass Sie, wenn Sie einen Knoten auf demselben Computer wie Ihren Hub starten, Folgendes angeben können: -hub http: // localhost: 4444 / grid / register Im Befehl anstelle der IP-Adresse des Hubs.

Festlegen des Klassenpfads in Java

Wenn Sie die Eingabetaste drücken, wird an der Eingabeaufforderung die folgende Ausgabe angezeigt.

Inzwischen wäre der Knoten mit dem Hub verbunden. Sie können dies überprüfen, indem Sie zur Eingabeaufforderung zurückkehren, die zum Starten des Hubs verwendet wird, und die folgende Meldung wird angezeigt: Registrierte einen Knoten http://192.168.0.11:5555 „.

Die IP-Adresse und Portnummer entspricht der Ihres Knotens. Da sich mein Knoten auf demselben Computer wie mein Hub befindet, wird für den Knoten 5555 verwendet. Wenn Sie ihn auf einem anderen Computer initiieren, wird der Standardport verwendet.

Wenn Sie die folgende URL auf dem Computer Ihres Hubs starten, erhalten Sie den Status der mit Ihrem Hub verbundenen Knoten. Siehe den hervorgehobenen Teil im Screenshot unten.

Nachdem Ihr Selenium Grid konfiguriert ist, können Sie mit der Ausführung von Testskripten auf Knoten fortfahren. Lassen Sie mich noch einmal betonen, dass wir Skripte in unserem Hub ausführen müssen und sie in unseren Knoten ausgeführt werden. Das zur Ausführung der Tests verwendete Skript ähnelt WebDriverTests.

Aufbau eines Selengitters

Ich habe mein Skript in der Eclipse-IDE ausgeführt. Die Ausführung dieses Skripts basiert auf zwei wichtigen Bibliothekspaketen. Sie sind Gewünschte Fähigkeiten Objekt und RemoteWebDriver Objekt.

DesiredCapabilities wird verwendet, um den Browsertyp und das Betriebssystem unseres Knotens festzulegen. Verwenden Sie den folgenden Code, um das DesiredCapabilities-Objekt zu importieren.

import org.openqa.selenium.remote.DesiredCapabilities

Mit RemoteWebDriver wird der Knoten ausgewählt, auf dem der Test ausgeführt werden soll. Verwenden Sie die folgenden Codezeilen, um das RemoteWebDriver-Objekt zu importieren.

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

Ich habe diese beiden Pakete zusammen mit dem TestNG-Anmerkungspaket für mein Skript importiert, wie im folgenden Codeausschnitt gezeigt. Ich habe TestNG-Anmerkungen importiert, weil ich dies als TestNG-Test ausgeführt habe, für den ein detaillierter Bericht erstellt wird. Ich würde Ihnen empfehlen, die gleichen Pakete für Ihren Code zu importieren.

Wenn Sie über die Logos eines Browsers in der Selenium Hub-Konsole navigieren, erhalten Sie Details wie die browserName und der Plattform des Knotens, den Sie automatisieren möchten. Das Bild zeigt auch an, wie viele Instanzen der Browser ich in meinem Knoten öffnen kann. Ich kann maximal 5 Chrome-, 5 Firefox- und 1 Internet Explorer-Instanzen konfigurieren. Diese Details sind im folgenden Screenshot dargestellt.

Sie können den Code im folgenden Snippet verwenden, um Ihr erstes Grid einzurichten.

Paket 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 .Plattform import org.openqa.selenium.WebDriver import org.openqa.selenium.remote.DesiredCapabilities import org.openqa.selenium.remote.RemoteWebDriver öffentliche Klasse TestGrid {statischer WebDriver-Treiber static String nodeUrl @BeforeTest public void setup () löst MalformedUR aus nodeUrl = 'http://192.168.0.11:5555/wd/hub' DesiredCapabilities functions = DesiredCapabilities.chrome () functions.setBrowserName ('chrome') functions.setPlatform (Platform.WINDOWS) driver = new RemoteWebDriver (neue URL (nodeUrl) ), Funktionen)} @Test public void simpleTest () Edureka ', driver.getTitle ()) @AfterTest public void afterTest () {driver.quit ()}}

Ich habe das gesamte Testskript in drei Testanmerkungen unterteilt. @BeforeTest, @Test und @AfterTest. In @BeforeTest habe ich die Objekte DesiredCapablities und RemoteWebDriver verwendet, um meinen Knoten zu konfigurieren. In @Test habe ich den Knoten gebeten, zur Startseite von Edureka zu navigieren und den Titel der Seite zu bestätigen. In @AfterTest habe ich den Knoten gebeten, die Browserinstanz zu beenden.

Wenn Ihr Test die Ausführung besteht, erhalten Sie die folgende Ausgabe.

18. Mai 2017 15:09:07 org.openqa.selenium.remote.ProtocolHandshake createSession INFO: Erkannter Dialekt: OSS PASSED: simpleTest ====================== ========================= Standardtest Testlauf: 1, Fehler: 0, Überspringen: 0 ========== ====================================== ================================== Standard-Suite Gesamtlauf der Tests: 1, Fehler: 0, Überspringen: 0 = ==============================================

Da dies als TestNG-Test ausgeführt wird, erhalten Sie einen detaillierten Testbericht ähnlich dem folgenden Screenshot.

Wenn Sie nicht wissen, was TestNG ist und wie Sie Testanmerkungen verwenden, lesen Sie meinen Blog über die Verwendung Selenium WebDriver mit TestNG aus dieser Selenium Tutorial Serie.

Im folgenden Video sehen Sie eine Demonstration zum Aufbau eines Selen-Gitters. Der Instruktor, der das Video liefert, erklärt die gleichen Konzepte, die in diesem Blog erklärt wurden.

Selenium Grid Tutorial für Anfänger | Selen Tutorial | Edureka

Das bringt uns zum Ende dieses Selenium Grid-Blogs. Wenn Sie Zweifel oder Probleme mit Code / Inhalt dieser Blog-Serie haben, lassen Sie diese bitte im Kommentarbereich unten und ich werde Ihr Problem frühestens lösen.

Wenn Sie Selen lernen und eine Karriere im Testbereich aufbauen möchten, schauen Sie sich unser interaktives Live-Online an Hier finden Sie rund um die Uhr Unterstützung, die Sie während Ihrer gesamten Lernphase begleitet.

Hast du eine Frage an uns? Bitte erwähnen Sie es in den Kommentaren und wir werden uns bei Ihnen melden.