Ich komme von Luxoft.
Vorwort aus der Post :
Selenoid ist ein Programm, mit dem Sie Browser und Android-Emulatoren mit speziellen Treibern steuern können. Sie können sie einzeln im Docker-Container ausführen.
Die Hauptidee von Selenoid besteht darin, für jede Sitzung einen neuen Container zu starten (einen neuen Browser oder Emulator zu starten) und diesen unmittelbar nach dem Schließen der Sitzung zu beenden.
Mit Selenoid können Sie eine hohe Last ohne zusätzliche Ressourcenkosten aufrechterhalten.
In diesem Beitrag werden einfache Tests in einem Android-Emulator gestartet.
Vorbereitung
Überprüfen Sie zunächst, ob auf Ihrem System virtuelle Maschinen ausgeführt werden können.
Hardware-Virtualisierung muss von Ihrem Prozessor unterstützt werden. Dies bedeutet, dass IntelVT- oder AMDV-Prozessorerweiterungen erforderlich sind. Führen Sie den folgenden Befehl aus, um zu überprüfen, ob der Prozessor eine dieser Funktionen unterstützt:
egrep '(vmx|svm)' /proc/cpuinfo
Docker
Docker muss auf Ihrem Betriebssystem installiert sein und ausgeführt werden.
Installieren Sie den Selenoid
Wenn Sie ein Redhat-basiertes Betriebssystem haben, können Sie den Konfigurationsmanager mit meinem Repository installieren.
yum -y install yum-plugin-copr yum copr enable antonpatsev/aerokube-cm-rpm yum -y install aerokube-cm
Wenn Sie kein Redhat-basiertes Betriebssystem haben, können Sie die Configuration Manager- Binärdatei herunterladen und verwenden.
Wenn Sie keinen direkten Zugriff auf das Internet und die Docker-Bilder haben, die Sie über die Registrierung herunterladen:
aerokube-cm selenoid start --force --browsers "android:6.0;chrome:78" --args "-session-attempt-timeout 2m -service-startup-timeout 2m" --registry -docker-registry
Wenn Sie direkten Zugang zum Internet haben.
aerokube-cm selenoid start --force --browsers "android:6.0;chrome:78" --args "-session-attempt-timeout 2m -service-startup-timeout 2m"
Der Schlüssel --args "-session-attempt-timeout 2m -service-startup-timeout 2m"
benötigt, wenn Sie eine große apk für längere Zeit installiert haben.
Der --force
überschreibt die Datei --force
Da Selenoid Configuration Manager noch nicht weiß, wie browsers.json für Mobile Chrome konfiguriert wird, müssen Sie es selbst reparieren.
Standardmäßig wird browsers.json im Verzeichnis ~ / .aerokube / selenoid generiert.
Die resultierende browsers.json-Datei zum Testen von Android-Anwendungen und Chrome im Android-Emulator.
{ "android": { "default": "6.0", "versions": { "6.0": { "image": "docker-registry:443/selenoid/android:6.0", "port": "4444", "path": "/wd/hub" } } }, "chrome": { "default": "mobile-75.0", "versions": { "mobile-75.0": { "image": "docker-registry:443/selenoid/chrome-mobile:75.0", "port": "4444", "path": "/wd/hub" } } } }
Bisher steht die mobile Chrome-Version hinter der regulären Chrome-Version.
Laden Sie das Image von Mobile Chrome herunter
docker pull selenoid/chrome-mobile:75.0
Browser.json ändern
Wenn Sie die Datei browsers.json ändern, muss selenoid neu geladen werden
aerokube-cm selenoid stop
aerokube-cm selenoid start
Konfiguration wird neu geladen
Sie können eine Reloading-Konfiguration durchführen. Details zum Link:
https://aerokube.com/selenoid/latest/#_reloading_configuration
Überprüfen Sie, ob der Docker-Container gestartet wurde und die Bilder heruntergeladen wurden.
docker ps docker images

Ausführen der Selenoid-Benutzeroberfläche mit dem Konfigurationsmanager
aerokube-cm selenoid-ui start --registry https://docker-registry
Oder
aerokube-cm selenoid-ui start
Überprüfen Sie, ob der Docker-Container gestartet wurde und die Bilder heruntergeladen wurden.
docker ps docker images

Wir gehen zu Selenoid-UI bei IP-wo-Sie-ran-Selenoid-und-Selenoid-UI: 8080
Du solltest 2 grüne CONNECTED-Lichter haben, die in Android und Chrom geschrieben sind.

Fügen Sie der Datei / etc / hosts die folgenden Zeilen hinzu, um vom Host-System aus auf Android zuzugreifen:
ip-- hypervisor
Demo-Test
Laden Sie https://github.com/aerokube/demo-tests herunter
Ändern Sie in allen drei Java-Dateien den Pfad in RemoteWebDriver zu Hypervisor (Sie müssen den Screenshot ändern).

oder an eine andere Adresse, an der Sie mit der Auswahl begonnen haben.
Ändern Sie in der AndroidRemoteApkTest.java-Datei den Pfad, unter dem Sie Ihre APK herunterladen können.
device.setCapability("app", "http://ci.example.com/game2048.apk");
auf
device.setCapability ("app", " http: // link-to-your-apk ");
oder
device.setCapability("app", "http://hypervisor:8000/game2048.apk");
Wenn Sie vom Docker auf localhost verweisen, tritt dieser Fehler auf, da Sie versuchen, vom Docker-Netzwerk aus auf den localhost des Hauptservers zuzugreifen:
Tests in error: browserTest(com.aerokube.selenoid.AndroidRemoteApkTest): An unknown server-side error occurred while processing the command. Original error: Problem downloading app from url http://localhost:8000/apk/game2048.apk: connect ECONNREFUSED 127.0.0.1:8000
Wie Sie Ihre lokalen Dateien zum Download bereitstellen, erfahren Sie weiter unten.
Fügen Sie in der Datei DemoTest.java setCapability hinzu, um Chrome auf Android auszuführen und so etwas zu erhalten.

In jeder Java-Datei können Sie die Videoaufzeichnung, die Remote-Anzeige oder die Verwaltung über VNC und die Protokollierung in einer Datei aktivieren oder deaktivieren. Um die Option zu deaktivieren, müssen Sie am Zeilenanfang zwei Schrägstriche einfügen.

Um Dateien aus dem aktuellen Verzeichnis zum Download zur Verfügung zu stellen, können Sie den Dienst static-server-in-dir in der aktuellen Konsole ausführen:
yum -y install yum-plugin-copr yum copr enable antonpatsev/static-server-in-dir yum -y install static-server-in-dir cd to directory static-server-in-dir start 8000 static-server-in-dir stop
Tests ausführen
Führen Sie im Demo-Test-Verzeichnis die folgenden Tests aus:
Wenn Sie Einstellungen festlegen müssen und Maven-Proxies verwenden (Nexus, Artifactory)
mvn -s settings.xml clean test
Wenn wir mit direktem Zugang zum Internet und ohne Einstellungen laufen
mvn clean test
Geschwindigkeit
Die Gesamtbereitstellungszeit des Android-Emulators und der Start von 1 Test dauert weniger als 1 Minute.
Bekannte Fehler
https://github.com/aerokube/demo-tests/issues/5
Testaufzeichnung
AndroidDemoTest.java:
AndroidRemoteApkTest.java:
DemoTest.java:
Suchen Sie mit Appium in einer mobilen Anwendung nach dem gewünschten Ort
Appium ist ein plattformübergreifendes Tool, d.h. Ermöglicht das Schreiben von Tests für mobile Plattformen (iOS, Android, Windows) mithilfe der API. Dies ist eines der am häufigsten verwendeten Tools für Regressionstestanwendungen auf Smartphones und Tablets.
Laden Sie Appium herunter und führen Sie es aus
Gehen Sie zu File
-> New Session Window

Geben Sie im Feld Remote host
die Adresse des Servers an, auf dem Selenoid ausgeführt wird.
Geben Sie im Feld Remote Port
den Port an, auf dem Selenoid ausgeführt wird - normalerweise 4444.
/wd/hub
Feld Remote Path
/wd/hub
Desired Capabiliting
Sie unter Desired Capabiliting
die Sie benötigen.
Das minimale JSON ist folgendes:
{ "browserName": "chrome", "browserVersion": "mobile-75.0", "enableVNC": true }
Nach dem Start der Sitzung haben Sie folgendes Bild:

Jetzt können Sie den gewünschten Ort suchen.

Telegramm-Chats:
https://t.me/aerokube - chat Aerokube
https://t.me/atinfo_chat - Chat für Testautomatisierungstechniker