So verwenden Sie Selenium + Testng, um Webautomatisierung in Docker zu realisieren

So verwenden Sie Selenium + Testng, um Webautomatisierung in Docker zu realisieren

Vorwort

Nachdem ich lange Zeit verschiedene Materialien gelesen hatte, habe ich das Problem der Selenium+Testng-Parametrisierung endlich gelöst! Möglicherweise finden Sie einige davon im Internet, aber dies sind alles meine eigenen Erfahrungen. Dieser Artikel stellt hauptsächlich den relevanten Inhalt zur Verwendung von Selenium+Testng durch Docker zur Realisierung der Webautomatisierung vor. Werfen wir einen Blick auf die ausführliche Einführung.

Erstellen einer Web-Automatisierungsumgebung mit Selenium+Testng unter Windows

Jeder, der im Bereich Automatisierung gearbeitet hat, muss mit dem Aufbau der Selenium-Webumgebung, insbesondere der Verwendung von Selenium in Java, sehr vertraut sein.

Erstellen und installieren Sie zuerst JDK und konfigurieren Sie die Java-Entwicklungsumgebung (wenn Sie immer noch nicht wissen, wie das geht, müssen Sie PP spielen). Laden Sie dann das entsprechende Selenium-JAR-Paket von der offiziellen Website herunter und laden Sie es in das Projekt. Oder verwenden Sie Maven und ändern Sie die Datei pom.xml, um das Selenium-Abhängigkeitspaket direkt zu laden:

 <Abhängigkeit>
 <groupId>org.seleniumhq.selenium</groupId>
 <artifactId>selenium-java</artifactId>
 <version>3.14.0</version>
 </Abhängigkeit>

Fügen Sie dann die entsprechende Browsertreiberdatei hinzu. Die Umgebung ist grundsätzlich fertig und Sie können mit dem automatisierten Testen des Codes beginnen.

Natürlich verwendet jeder beim Schreiben von Code auch das beliebte Unit-Test-Framework testng. Wie fügt man auf dieser Basis eine Testumgebung hinzu? Tatsächlich ist dies keine schwierige Aufgabe. Auf der offiziellen Website von testng (https://testng.org/doc/index.html) finden Sie Anweisungen zum Installieren von Plug-Ins in Editoren wie Eclipse und IEDA. In Eclipse können Sie beispielsweise direkt in den Market gehen und nach testng suchen, um es zu installieren. Wenn Sie Maven verwenden, müssen Sie Abhängigkeitspakete zu pom.xml hinzufügen:

<Repositorys>
<Repository>
<id>jcenter</id>
<name>Papierkorb</name>
<url>http://jcenter.bintray.com</url>
</Repository>
</Repositorys>

<Abhängigkeit>
<groupId>org.testng</groupId>
<artifactId>Test</artifactId>
<version>6.10</version>
<scope>Test</scope>
</Abhängigkeit>

Warten Sie einfach, bis der Download und die Installation abgeschlossen sind. Dann müssen Sie nur noch den Code schreiben und können sich frei ausdrücken.

Aber was ich heute vorstellen möchte, ist nicht das oben genannte. Diese Art von Umgebung ist sehr einfach zu erstellen. Die meisten Leute wissen tatsächlich, wie es geht. Es gibt nicht viele Fallstricke. Es ist nur eine Codeumgebung.

Mit welchem ​​Problem werden wir uns dieses Mal befassen? Im zunehmend weiterentwickelten Docker-Modus kann die obige Kompilierungsumgebung nicht auf dem Linux-System ausgeführt werden. Es gibt keinen Code-Editor, keine Schnittstelle und keinen Browser. Was sollen wir tun? Werfen wir einen Blick darauf.

Installation und Verwendung von Docker

Ebenso werden Java+Selenium+Testng weiterhin benötigt, aber die Umgebung wurde von Windows auf Linux geändert.

Bezüglich der Verwendung von Docker finden Sie hier eine kurze Einführung in den Installations- und Startvorgang:

Verwenden Sie zur direkten Installation den Befehl yum install docker .

service docker start啟den Docker-Dienst;

Dann holt docker pull centos das grundlegendste Docker-Image unter der Centos-Version.

Alle aktuellen Images können über den Befehl docker images aufgelistet werden.

Nachdem Sie das Linux-Image überprüft haben, verwenden Sie docker run -it -d image name“, um den Linux-Container auszuführen (achten Sie auf -it -d , wenn kein Container vorhanden ist, bleibt er sofort hängen).

Um den Container aufzurufen, können Sie zunächst Docker PS verwenden, um alle aktuell ausgeführten Container anzuzeigen. Wenn Sie sie nicht finden können, bedeutet dies, dass der Container nicht gestartet oder heruntergefahren wurde. docker ps listet die Container-ID auf.

Verwenden Sie docker attach Container-ID, um sich beim Linux im Container anzumelden.

Erstellen einer Java-Umgebung unter Docker

Das Linux im Container ist eigentlich dasselbe wie der normale Linux-Betrieb.

Installieren Sie zuerst JDK:

Laden Sie das Paket jdk-8u181-linux-x64.tar.gz herunter.

tar -xzvf jdk-8u181-linux-x64.tar.gz um es zu entpacken und das Verzeichnis jdk1.8.0_181 abzurufen (vorausgesetzt, es ist im Verzeichnis /root/java/ gespeichert);

Konfigurieren Sie Java-Umgebungsvariablen:

Bearbeiten Sie die Umgebungsvariablendatei: vi /etc/profile

Inhalt hinzufügen:

 export JAVA_HOME=/root/java/jdk1.8.0_181 
 exportiere JRE_HOME=${JAVA_HOME}/jre
 export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib 
 export PATH=${JAVA_HOME}/bin:$PATH

Aktualisieren Sie die Umgebungsvariablenkonfiguration:

source /etc/profile

Bestätigen Sie, dass die Java-Version wirksam ist:

java -version

An diesem Punkt ist die Java-Umgebung gelöst. Es gibt keine besonderen Schwierigkeiten, folgen Sie ihnen einfach Schritt für Schritt.

Testumgebungskonfiguration unter Docker

Als nächstes folgt testng. Da die Umgebung Java ähnelt und auch mit Umgebungsvariablen zusammenhängt, wird dies zuerst gelöst:

Laden Sie das Paket testng-6.14.3.jar herunter.

tar -xzvf testng-6.14.3.jar um die Datei zu entpacken und das Testng-Verzeichnis abzurufen (vorausgesetzt, es befindet sich im Verzeichnis /root/java/testng/);

Fahren Sie mit der Bearbeitung der Umgebungsvariablendatei fort:

vi /etc/profile

Inhalt hinzufügen:

exportiere TESTNG_HOME=/root/java/testng
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH:$TESTNG_HOME/testng-6.14.3.jar

Aktualisieren Sie die Umgebungsvariablenkonfiguration:

source /etc/profile

Beachten Sie hier die Testng-Umgebungsvariablen. Der CLASSPATH wird auf Basis der Java-Umgebung angehängt. Wenn Sie unter Windows konfigurieren, sollte das Trennzeichen geändert werden in; und die Aufrufformen der Umgebungsvariablen sind anders. Es gibt einige Unterschiede.

Nun, manche Leute denken vielleicht: Ist das nicht einfach?

Wenn Sie jedoch zu diesem Zeitpunkt mit der Ausführung fortfahren, werden Sie feststellen, dass Fehler auftreten, was bedeutet, dass Sie in eine tiefe Grube geraten sind. Dies liegt daran, dass Sie sich außerhalb der gesamten Entwicklungsumgebung befinden.

Lassen Sie uns zunächst über die Ausführungsschritte von testng sprechen. Angenommen, Sie schreiben selbst eine Datei test.java. Denken Sie daran, sie einfach zu halten und keine anderen JAR-Pakete einzuschließen. Der Paketname ist einfach und der Klassenname ist test:

 javac test.java
 java org.testng.TestNG -testklasse simple.test

Es scheint sehr einfach zu sein, aber bei der Ausführung treten überall Fehler auf. Bei der Ausführung von javac test.java treten häufig folgende Fehler auf:

java.lang.NoClassDefFoundError: com/beust/jcommander/

Dies liegt daran, dass das zur Kompilierung verwendete JAR-Paket fehlt. Sie müssen jcommander-1.72.jar herunterladen. Wir platzieren es zusammen mit dem JAR-Paket von testng (vorausgesetzt, es befindet sich im Verzeichnis /root/java/testng/):

Die Umgebungsvariable CLASSPATH muss angehängt werden:

CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH:$TESTNG_HOME/testng-6.14.3.jar:$TESTNG_HOME/jcommander-1.72.jar

Fahren Sie mit der Aktualisierung der Umgebungskonfiguration fort:

source /etc/profile

Danach kann es normalerweise problemlos kompiliert werden und die Datei test.class wird angezeigt.

Wenn andere Fehler auftreten, z. B. dass testng-bezogene Pakete nicht vorhanden sind usw., überprüfen Sie bitte, ob die Umgebungsvariablen richtig konfiguriert sind.

Der letzte Schritt ist die Operation, und hier treten auch die meisten Probleme auf.

Lassen Sie uns zunächst über die Struktur sprechen. Für die obige Klasse simple.test müssen Sie beispielsweise einen Ordner simple erstellen, um test.java zu speichern.

In der Umgebungsvariable CLASSPATH muss das oberste Verzeichnis der Testng-Codedateien und -Pakete hinzugefügt werden, vorausgesetzt, es ist

 /root/java/testng/
 /root/java/testng/simple/test.java

Mit dieser strukturellen Voraussetzung können Sie es mit dem folgenden Befehl ausführen:

java org.testng.TestNG -testklasse simple.test

Das Ergebnis wird angezeigt und bedeutet, dass der Vorgang erfolgreich war:

Insgesamt durchgeführte Tests: 1, Fehler: 0, Übersprungene Tests: 0

Wenn Ihr Code einen Testfall @Test enthält, die Ausführung jedoch 0 anzeigt, bedeutet dies, dass der Testfall trotzdem fehlgeschlagen ist, aber kein eindeutiger Fehler vorliegt.

Natürlich bedeutet dies noch nicht das Ende.

Denn auch das Fehlen verschiedener abhängiger Jar-Pakete kann zu Problemen führen:

Diese JAR-Pakete können über Parameter eingeführt werden

 /root/java/testng/
 /root/java/testng/simple/test.java

Rufen Sie den Browser unter Windows aus der Ferne auf

Glauben Sie, dass alles gut wird, wenn das Umweltproblem gelöst ist? Und noch etwas: Was ist mit dem Browser? Wie löst man das Problem, dass kein Browser vorhanden ist?

Bitte verwenden Sie für die Bereitstellung auf einem Windows-Computer den mit Selenium gelieferten Server.

Die Lösung dieses Problems ist relativ einfach:

Laden Sie das Paket selenium-server-standalone-3.14.0.jar herunter;

Legen Sie es im angegebenen Verzeichnis ab (beispielsweise im Stammverzeichnis von Laufwerk C).

Wechseln Sie mit CD in dieses Verzeichnis: cd C:\

Führen Sie den Befehl aus, um den Selenium-Remotedienst zu öffnen:

java -jar selenium-server-standalone-3.14.0.jar -port 6666

Als nächstes wird jemand fragen, wie der Browser angegeben wird?

Um den gerade gestarteten Dienst in Windows aufzurufen, müssen Sie im Java-Code lediglich folgende Anweisung verwenden:

WebDriver-Treiber = neuer RemoteWebDriver("http://ip:6666/wd/hub/", DesiredCapabilities.chrome());

Beachten Sie auch, dass die Browsertreiberdatei noch auf dem Server benötigt wird. Einfach mit dem Jar-Paket zusammenpacken und fertig. Wer gerne bastelt, kann sich das selbst anschauen. Der einzige Unterschied ist, dass Sie beim Starten des Dienstes einige Parameter mitbringen müssen.

Der gesamte Docker verwendet Selenium+Java, um den Chrome-Browser unter Windows remote aufzurufen und den Aufbau der Web-Automatisierungsumgebung abzuschließen.

Wir werden das Schreiben von Web-Automatisierungscode in Zukunft mit Selenium+Testng unter Docker aktualisieren. Bitte warten Sie auf unser nächstes Update~

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • Praktische Möglichkeit zum Erstellen einer verteilten Selenium-Grid-Umgebung mit Docker
  • Docker+Selenium-Methode zur Realisierung automatischer Gesundheitsberichte
  • Erstellen einer verteilten Selenium-Umgebung basierend auf Docker
  • Beispielcode zum Testen einer Technologieanwendung basierend auf Docker+Selenium Grid

<<:  So verwenden Sie vite zum Erstellen einer Vue3-Anwendung

>>:  Tipps zur Konvertierung von MySQL-Spalten in Zeilen (teilen)

Artikel empfehlen

Tutorial zur DHCP-Konfiguration in der CentOS7-Umgebung

Inhaltsverzeichnis Konfigurationsbefehlsschritte ...

Neulinge lernen schnell die Schritte zum Erstellen von Website-Symbolen

<br />Original-URL: http://www.lxdong.com/po...

JS implementiert kreisförmiges Ziehen und Schieben des Fortschrittsbalkens

In diesem Artikelbeispiel wird der spezifische JS...

MySql fügt Daten erfolgreich ein, meldet aber [Err] 1055 Fehlerlösung

1. Frage: Ich habe in diesen Tagen Einfügevorgäng...

JavaScript Snake-Implementierungscode

In diesem Artikelbeispiel wird der spezifische Ja...

IE6 implementiert min-width

Zunächst einmal wissen wir, dass dieser Effekt ei...

Vorschau auf die neuen Funktionen von XHTML 2.0

<br />Bevor Browser die nächste Generation v...

Automatische Zeilenumbrüche in HTML-Pre-Tags

Zu diesem Zeitpunkt können Sie overflow:auto; verw...

Canvas zeichnet Rubbellos-Effekt

In diesem Artikel wird der spezifische Code zum Z...

Erste Zusammenfassung des Website-Erstellungs-Tutorials für Anfänger

Nachdem ich diese sechs Artikel geschrieben hatte,...

MySQL-Zeittypauswahl

Inhaltsverzeichnis DATETIME ZEITSTEMPEL Wie man w...