Einrichtung von Selenium Grid
Einrichtung von Selenium Grid in Katalon Studio
Um noch mehr von parallelen Tests zu profitieren, können Sie eine Selenium Grid-Einrichtung für Katalon Studio in Betracht ziehen. Derzeit unterstützt Katalon nur Selenium Grid 3, aber…
Das Ausführen von Selenium 3-Tests auf einem Selenium 4 Grid ist machbar und so konzipiert, dass es abwärtskompatibel ist, um sicherzustellen, dass Tests, die mit der Selenium 3 API geschrieben wurden, auch auf der neueren Selenium Grid-Version ohne sofortige Code-Änderungen ausgeführt werden können. Um jedoch den vollen Nutzen aus den neuen Funktionen und Verbesserungen in Selenium 4 zu ziehen, wird empfohlen, Ihre Tests schließlich auf Selenium 4 zu aktualisieren. So können Sie Ihre Selenium 3-Tests auf einem Selenium 4 Grid ausführen:
Die Einrichtung eines Selenium Grids auf Kubernetes oder AWS Fargate bietet eine skalierbare und flexible Infrastruktur für parallele Tests und ermöglicht es Ihnen, mehrere Selenium-Tests gleichzeitig auf verschiedenen Browsern und Betriebssystemen auszuführen. Diese Einrichtung ist vorteilhaft, um die Ausführung einer großen Testsuite zu beschleunigen und sicherzustellen, dass Ihre Anwendung in verschiedenen Umgebungen korrekt funktioniert. Im Folgenden finden Sie allgemeine Anleitungen zur Einrichtung von Selenium Grid auf Kubernetes und AWS Fargate.
Einrichtung von Selenium Grid auf Kubernetes
Kubernetes, eine Open-Source-Plattform zur Verwaltung von containerisierten Workloads und Diensten, eignet sich gut für den Betrieb von Selenium Grid auf eine skalierbare und widerstandsfähige Weise.
Voraussetzungen
- Ein eingerichteter und zugänglicher Kubernetes-Cluster. Sie können verwaltete Dienste wie Google Kubernetes Engine (GKE), Amazon EKS oder Azure AKS verwenden.
- Das Befehlszeilentool kubectl ist installiert und konfiguriert, um mit Ihrem Cluster zu kommunizieren.
- Grundkenntnisse über Kubernetes-Konzepte (Pods, Deployments, Services). Schritte
- Erstellen Sie ein Selenium Grid Deployment:
- Verwenden Sie die offiziellen Selenium-Images (selenium/hub, selenium/node-chrome, selenium/node-firefox) für den Hub und die Knoten.
- Definieren Sie ein Kubernetes-Deployment für den Selenium-Hub und jeden Typ von Selenium-Knoten, den Sie benötigen.
- Machen Sie den Selenium Hub zugänglich:
- Erstellen Sie einen Kubernetes-Dienst, um den Selenium-Hub für Ihre Tests freizugeben. Sie könnten einen LoadBalancer-Diensttyp für den externen Zugriff oder einen ClusterIP verwenden, wenn Sie planen, Tests innerhalb des Clusters auszuführen.
- Skalieren Sie Selenium-Knoten:
- Passen Sie die Anzahl der Replikate für jeden Knotentyp an Ihre Bedürfnisse für parallele Tests an.
- Führen Sie Tests aus:
- Konfigurieren Sie Ihr Testframework, um sich mit dem Selenium-Hub zu verbinden, indem Sie die IP-Adresse oder den DNS-Namen des Dienstes verwenden.
Einrichtung von Selenium Grid auf AWS Fargate
AWS Fargate ist eine serverlose Compute-Engine für Container, die mit Amazon Elastic Container Service (ECS) zusammenarbeitet und es Ihnen ermöglicht, Container ohne Verwaltung von Servern oder Clustern auszuführen.
Voraussetzungen
- Ein AWS-Konto und Vertrautheit mit AWS-Diensten.
- Die AWS CLI ist installiert und konfiguriert. Schritte
- Erstellen Sie einen ECS-Cluster:
- Wählen Sie den Fargate-Starttyp bei der Erstellung Ihres Clusters.
- Definieren Sie Task-Definitionen:
- Erstellen Sie ECS-Task-Definitionen für die Selenium-Hub- und Knoten-Container und geben Sie die Verwendung der offiziellen Selenium-Docker-Images an.
- Führen Sie den Selenium Hub und die Knoten als Dienste aus:
- Erstellen Sie ECS-Dienste für den Selenium-Hub und jeden Knotentyp und beziehen Sie sich auf deren jeweilige Task-Definitionen. Stellen Sie sicher, dass der Netzwerkmodus auf awsvpc eingestellt ist, um direkte Netzwerkfunktionen zu ermöglichen.
- Machen Sie den Selenium Hub zugänglich:
- Verwenden Sie einen Application Load Balancer (ALB), um den Selenium-Hub-Dienst extern freizugeben. Konfigurieren Sie den Listener und die Zielgruppe, um Anfragen an den Hub weiterzuleiten.
- Skalieren Sie Selenium-Knoten:
- Passen Sie die gewünschte Anzahl von Aufgaben für jeden Knotendienst an Ihre Testanforderungen an.
- Führen Sie Tests aus:
- Richten Sie Ihre Testausführungen auf den ALB-DNS-Namen, um eine Verbindung zum Selenium Grid herzustellen.
Allgemeine Tipps
- Überwachung und Protokollierung: Nutzen Sie die Überwachungs- und Protokollierungstools von Kubernetes und AWS, um die Leistung des Selenium Grids zu verfolgen und Probleme zu beheben.
- Sicherheit: Stellen Sie sicher, dass Ihr Selenium Grid sicher ist, insbesondere wenn es extern freigegeben ist. Erwägen Sie die Verwendung von Netzwerkrichtlinien in Kubernetes und Sicherheitsgruppen in AWS, um den Zugriff zu beschränken.
- Versionskompatibilität: Stellen Sie bei der Einrichtung sicher, dass die Version von Selenium Grid und die Knotenversionen mit Ihrer Testsuite und den Browsern kompatibel sind. Wenn Sie Unterstützung bei Selenium Grid benötigen, ist dies nicht das Thema, bitte kontaktieren Sie mich, ich habe verschiedene Kubernetes- und AWS Fargate-Beispiele, die leicht in Ihre private Cloud-Landschaft (Azure, Google Cloud, AWS) integriert werden können.
Wenn Sie es lokal ausprobieren möchten, verwenden Sie eine Docker Compose-Datei aus dem Selenium Github, um es zum Laufen zu bringen.
Docker Compose-Datei für Selenium Grid
Erstellen Sie eine docker-compose.yml-Datei in Ihrem Projektverzeichnis und fügen Sie den folgenden Inhalt hinzu:
version: '3'
services:
selenium-hub:
image: selenium/hub:4.1.1-20211217
container_name: selenium-hub
ports:
- "4444:4444"
chrome-node:
image: selenium/node-chrome:4.1.1-20211217
container_name: chrome-node
depends_on:
- selenium-hub
environment:
- SE_EVENT_BUS_HOST=selenium-hub
- SE_EVENT_BUS_PUBLISH_PORT=4442
- SE_EVENT_BUS_SUBSCRIBE_PORT=4443
volumes:
- /dev/shm:/dev/shm
firefox-node:
image: selenium/node-firefox:4.1.1-20211217
container_name: firefox-node
depends_on:
- selenium-hub
environment:
- SE_EVENT_BUS_HOST=selenium-hub
- SE_EVENT_BUS_PUBLISH_PORT=4442
- SE_EVENT_BUS_SUBSCRIBE_PORT=4443
volumes:
- /dev/shm:/dev/shm
Starten Sie Selenium Grid: Navigieren Sie zu dem Verzeichnis, das Ihre docker-compose.yml-Datei enthält. Führen Sie den folgenden Befehl aus, um alle Dienste zu starten:
docker-compose up -d
- Zugriff auf die Selenium Grid-Konsole: Sobald die Container laufen, können Sie auf die Selenium Grid-Konsole zugreifen, indem Sie in Ihrem Webbrowser zu http://localhost:4444 navigieren. Hier können Sie den Status Ihres Grids und die verbundenen Knoten sehen.
- Ausführen von Tests: Jetzt können Sie Ihre Selenium-Tests gegen das Grid ausführen. Konfigurieren Sie Ihren Test, um den Remote WebDriver zu verwenden, der auf http://localhost:4444/wd/hub zeigt.
- Skalieren von Knoten: Wenn Sie mehr Chrome- oder Firefox-Knoten benötigen, können Sie sie mit Docker Compose skalieren. Zum Beispiel, um auf 3 Chrome-Knoten zu skalieren, führen Sie aus:
- Stoppen von Selenium Grid: Um die von docker-compose up erstellten Container, Netzwerke und Volumes zu stoppen und zu entfernen, führen Sie aus:
docker-compose down
Anpassung
- Selenium-Version: Sie können die Version von Selenium in den Image-Tags (z.B. selenium/hub:4.1.1-20211217) auf die gewünschte Version ändern, die Ihre Testsuite unterstützt.
- Browser-Versionen: Passen Sie auf ähnliche Weise die Browser-Versionen an, indem Sie verschiedene Tags für selenium/node-chrome und selenium/node-firefox-Bilder entsprechend Ihren Testanforderungen auswählen.
- Zusätzliche Knoten: Um weitere Browser-Knoten (z.B. Edge, Opera) hinzuzufügen, replizieren Sie die Dienstdefinitionen für chrome-node oder firefox-node und passen Sie das verwendete Bild an.