Jedes Jahr erforschen Testautomatisierungsingenieure aus der ganzen Welt die neuesten Tools und Techniken, um ihre Testautomatisierungsumgebung stabiler, schneller und einfacher zu verwenden und zu warten. Dies ist von entscheidender Bedeutung, um sicherzustellen, dass ihre Frameworks jederzeit in großem Umfang in ihrem Unternehmen implementiert werden. In jedem Fall sind aufgeblähte, veraltete Frameworks schnell aus der Mode gekommen.
Es ist bekannt, dass Selenium Grid schwierig einzurichten, instabil und schwierig bereitzustellen und / oder die Versionskontrolle in einer CI-Pipeline durchzuführen ist. Eine einfachere, stabilere und bequemere Möglichkeit ist die Verwendung der vorgefertigten Selenium Docker-Bilder.
Hinweis : Der einzige Nachteil dieser Methode besteht darin, dass sie vom IE (Internet Explorer) nicht unterstützt wird, da das Windows-Betriebssystem derzeit nicht in einen Container gestellt werden kann.
Vorbereitung auf die Arbeit
Um zu beginnen, müssen Sie zuerst Docker und Docker Compose auf Ihrem Computer installieren . Wenn Sie Windows 10 oder Mac verwenden, werden beide mit Docker Desktop installiert .
Ausführen Ihres Grids
Das offizielle Selenium Docker Hub-Repository enthält vorgefertigte Docker-Images für Ihre Selenium Hub-, Firefox- und Chrome-Knoten.
Der einfachste Weg, sie in Ihrem lokalen Selenium Grid zu verwenden, besteht darin, eine Docker Compose-Datei im Stammverzeichnis Ihres Projekts zu erstellen. Benennen Sie die Datei einfach
docker-compose.yml.
Ich habe unten ein Beispiel eingefügt, das das folgende Raster erstellt:
- Ein Selenium Hub
- Ein Chrome-Knoten
- Ein Firefox-Knoten
#docker-compose.yml
version: "3"
services:
selenium-hub:
image: selenium/hub:3.141.59-neon
container_name: selenium-hub
ports:
- "4444:4444"
chrome:
image: selenium/node-chrome:3.141.59-neon
volumes:
- /dev/shm:/dev/shm
depends_on:
- selenium-hub
environment:
- HUB_HOST=selenium-hub
- HUB_PORT=4444
firefox:
image: selenium/node-firefox:3.141.59-neon
volumes:
- /dev/shm:/dev/shm
depends_on:
- selenium-hub
environment:
- HUB_HOST=selenium-hub
- HUB_PORT=4444
In der Docker Compose-Datei wird beschrieben, wie Sie Ihr Grid einrichten. Weitere Informationen zum Erstellen von Docker Compose-Dateien finden Sie in der offiziellen Dokumentation .
Verwenden Sie zum Starten Ihres Grids einfach ein beliebiges Terminal (
PowerShelloder cmdunter Windows), in dem Sie den folgenden Befehl aus dem Stammverzeichnis Ihres Projekts ausführen:
docker-compose up
Netzanschluss
Sie können wie gewohnt eine Verbindung zu Ihrem Selenium Grid herstellen, da der Hub Port 4444 Ihres lokalen Computers überwacht. Hier ist ein Beispiel, in dem wir unseren Treiber für die Verwendung unseres Chrome-Knotens konfiguriert haben.
// Driver.java
protected static RemoteWebDriver browser;
DesiredCapabilities cap = new DesiredCapabilities();
ChromeOptions chromeOptions = new ChromeOptions();
cap.setCapability(ChromeOptions.CAPABILITY, chromeOptions);
cap.setBrowserName("chrome");
driver = new RemoteWebDriver(cap);
Anschließend können Sie die TestNG- Bibliothek verwenden , um wie gewohnt Tests auf mehreren Knoten parallel auszuführen.
Es ist erwähnenswert, dass auf jedem Knoten mehrere Browser gestartet werden können. Dies wird jedoch nicht empfohlen, und die Verwendung eines Browsers pro Knoten wird als bewährte Methode für eine optimale Leistung angesehen.
Zusätzliche Tipps und Tricks
Wenn Sie sehen möchten, was im Browser vor sich geht, um Ihre Tests zu debuggen, sollten Sie eine
debugVersion Ihrer docker-compose.ymlDatei haben, die die debug Browserknoten lädt . Sie enthalten einen VNC-Server, sodass Sie den Browser beobachten können, während der Test ausgeführt wird.
Es ist auch möglich, Browser ohne Kopf auszuführen, um die Geschwindigkeit zu erhöhen (wie üblich), und Selenium bietet auch
baseVersionen von Bildern an, sodass Sie Ihre eigenen Bilder erstellen können, wenn Sie zusätzliche Software installieren müssen.
Sie können Ihr Grid auch für Kubernetes oder Swarm bereitstellen, um eine stabile Version des Grids für Ihre CI-Pipeline zu erstellen . Dies gewährleistet eine schnelle Wiederherstellung oder einen schnellen Austausch der Docker im Fehlerfall.
Weiterlesen:
- Selenium: 1 — 2
- Selenium: 3 — 5