Testen von Android-Anwendungen mit Selenoid. Suchen Sie den Ort in einer mobilen App mit Appium

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.


Ausführen von Selenoid mit Configuration Manager und Erstellen von browsers.json


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

Source: https://habr.com/ru/post/de478816/


All Articles