Selenium Grid
1. Einführung in Selenium Grid
Selenium Grid ist ein wichtiger Bestandteil der Selenium-Suite und ermöglicht es, Tests parallel auf mehreren verschiedenen Maschinen, Browsern und Betriebssystemen auszuführen.
Mit Selenium Grid können Sie verteilte Tests durchführen, wodurch die Testeffizienz verbessert und die Testzeit verkürzt wird.
Die Kernidee von Selenium Grid besteht darin, Testaufgaben zur Ausführung auf mehrere Knoten (Nodes) zu verteilen, und diese Knoten werden zentral von einem Hub-Knoten (Hub) verwaltet.
1.1 Wichtige Funktionen von Selenium Grid
- Paralleles Testen: Tests gleichzeitig auf mehreren Browsern und Betriebssystemen ausführen, wodurch die Testzeit erheblich reduziert wird.
- Browserübergreifendes Testen: Unterstützt das Ausführen von Tests in verschiedenen Browsern (wie Chrome, Firefox, Edge usw.) und gewährleistet die Kompatibilität der Anwendung über verschiedene Umgebungen hinweg.
- Plattformübergreifendes Testen: Unterstützt das Ausführen von Tests auf verschiedenen Betriebssystemen (wie Windows, macOS, Linux usw.) und überprüft die Leistung der Anwendung auf verschiedenen Plattformen.
- Dynamische Skalierung: Knoten können bei Bedarf dynamisch hinzugefügt oder entfernt werden und flexibel auf Änderungen der Testanforderungen reagieren.
1.2 Architektur von Selenium Grid
Selenium Grid verwendet eine Hub-Node-Architektur:
- Hub: Der zentrale Knoten, der dafür verantwortlich ist, Testanfragen zu empfangen und Aufgaben zur Ausführung an geeignete Knoten zu verteilen.
- Node: Der Ausführungsknoten, der für die tatsächliche Ausführung von Testaufgaben verantwortlich ist. Jeder Knoten kann mit verschiedenen Browsern und Betriebssystemen konfiguriert werden.
2. Selenium Grid konfigurieren
Bevor Sie Selenium Grid verwenden, müssen Sie einige grundlegende Konfigurationen vornehmen. Die folgenden Schritte zur Konfiguration basieren auf Selenium 4.
2.1 Java installieren
Selenium Grid basiert auf der Java-Laufzeitumgebung, daher müssen Sie zuerst Java installieren. Sie können Java mit den folgenden Schritten installieren:
- Besuchen SieOracle JavaoderOpenJDKLaden Sie die für Ihr Betriebssystem geeignete Java-Version herunter.
- Installieren Sie Java und konfigurieren Sie die Umgebungsvariablen.
2.2 Selenium Server herunterladen
Selenium Server ist die Kernkomponente von Selenium Grid. Sie könnendie offizielle Selenium-Websitebesuchen, um die neueste Version von Selenium Server herunterzuladen.
- Herunterladen
selenium-server-<version>.jarder Datei benötigen. - Speichern Sie die heruntergeladene Datei in einem geeigneten Verzeichnis.
2.3 Starten des Hubs
Nachdem Sie Java und Selenium Server konfiguriert haben, können Sie den Hub starten. Öffnen Sie ein Befehlszeilentool und navigieren Sie zu dem Verzeichnis, in demselenium-server-<version>.jardie Datei gespeichert ist, und führen Sie dann den folgenden Befehl aus:
Beispiel
Dadurch wird der Hub gestartet. Standardmäßig lauscht der Hub auf Port 4444. Sie können über Ihren Browserhttp://localhost:4444den Status des Hubs anzeigen.
2.4 Starten des Nodes
Als Nächstes müssen Sie einen oder mehrere Nodes starten, um Testaufgaben auszuführen. Führen Sie auf einem anderen Rechner oder in einem anderen Terminal auf demselben Rechner den folgenden Befehl aus:
Beispiel
Wobei,<hub-ip>die IP-Adresse des Rechners ist, auf dem sich der Hub befindet. Wenn Hub und Node auf demselben Rechner sind, können Sie verwendenlocalhost。
2.5 Konfigurieren von Browser und Betriebssystem des Node
Sie können den Browser und das Betriebssystem des Node über Befehlszeilenparameter konfigurieren. Der folgende Befehl konfiguriert beispielsweise einen Node, der die Browser Chrome und Firefox unterstützt:
Beispiel
3. Tests remote ausführen
Nach der Konfiguration von Selenium Grid können Sie Tests remote ausführen, indem Sie Testskripte schreiben. Das Folgende ist ein Python-Beispiel basierend auf Selenium 4.
3.1 Installation der Selenium-Python-Bindings
Zuerst müssen Sie die Python-Bindings für Selenium installieren:
Beispiel
3.2 Schreiben eines Testskripts
Das Folgende ist ein einfaches Testskript, das Tests auf einem Remote-Knoten über Selenium Grid ausführt:
Beispiel
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
# Desired Capabilities festlegen
capabilities = DesiredCapabilities.CHROME.copy()
capabilities['platform'] = 'WINDOWS' # Betriebssystem angeben
capabilities['version'] = 'latest' # Browsersversion angeben
# Verbindung zum Selenium Grid Hub herstellen
driver = webdriver.Remote(
command_executor='http://<hub-ip>:4444/wd/hub',
desired_capabilities=capabilities
)
# Test ausführen
driver.get("https://www.example.com")
print(driver.title)
driver.quit()
3.3 Ausführen des Testskripts
Speichern Sie das Skript und führen Sie es aus. Das Skript verteilt die Testaufgabe zur Ausführung über den Selenium Grid Hub an einen geeigneten Node.
4. Erweiterte Konfiguration von Selenium Grid
4.1 Konfigurieren von Browser und Betriebssystem des Nodes
Beim Starten eines Nodes können Sie die unterstützten Browser und Betriebssysteme über Parameter angeben:
java -jar selenium-server-<version>.jar node --hub http://<hub-ip>:4444 --browser "browserName=chrome,platform=WINDOWS"
4.2 Selenium Grid mit Docker ausführen
Selenium stellt offizielle Docker-Images bereit, mit denen Sie schnell einen Hub und einen Node starten können:
# 启动 Hub docker run -d -p 4444:4444 --name selenium-hub selenium/hub # 启动 Node docker run -d --link selenium-hub:hub selenium/node-chrome
4.3 Konfigurieren der Grid-Lastverteilung
Sie können die Lastverteilung konfigurieren, indem Sie mehrere Hubs und Nodes starten, um die Testparallelität zu verbessern.
Andere Erweiterungen