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:

  1. Besuchen SieOracle JavaoderOpenJDKLaden Sie die für Ihr Betriebssystem geeignete Java-Version herunter.
  2. 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.

  1. Herunterladenselenium-server-<version>.jarder Datei benötigen.
  2. 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

java -jar selenium-server-<version>.jar hub

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

java -jar selenium-server-<version>.jar node --hub http://<hub-ip>:4444

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

java -jar selenium-server-<version>.jar node --hub http://<hub-ip>:4444 --browser "browserName=chrome" --browser "browserName=firefox"

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

pip install selenium

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 import webdriver
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