Test des applications Android à l'aide de sélénoïde. Rechercher l'emplacement dans une application mobile à l'aide d'Appium

Je viens de Luxoft.
Préface du post :


Selenoid est un programme qui vous permet de contrÎler les navigateurs et les émulateurs Android à l' aide de pilotes spéciaux. Capable d'exécuter chacun d'eux isolément dans le conteneur Docker.


L'idĂ©e principale de Selenoid est de lancer un nouveau conteneur pour chaque session (lancer un nouveau navigateur ou Ă©mulateur) et de l'arrĂȘter immĂ©diatement aprĂšs la fermeture de la session.


Selenoid vous permet de maintenir une charge élevée sans coûts de ressources supplémentaires.


Ce message lancera des tests simples dans un Ă©mulateur Android .


La préparation


Vérifiez d'abord que votre systÚme peut exécuter des machines virtuelles.


La virtualisation matĂ©rielle doit ĂȘtre prise en charge par votre processeur. Cela signifie que des extensions de processeur IntelVT ou AMDV sont requises. Pour vĂ©rifier que le processeur prend en charge l'un d'eux, exĂ©cutez la commande:


egrep '(vmx|svm)' /proc/cpuinfo 

Docker


Docker doit ĂȘtre installĂ© et exĂ©cutĂ© sur votre systĂšme d'exploitation.


Installer Selenoid


Si vous avez un systÚme d'exploitation basé sur Redhat, vous pouvez utiliser mon référentiel pour installer le gestionnaire de configuration .


 yum -y install yum-plugin-copr yum copr enable antonpatsev/aerokube-cm-rpm yum -y install aerokube-cm 

Si vous ne disposez pas d'un systÚme d'exploitation basé sur Redhat, vous pouvez télécharger et utiliser le fichier binaire du gestionnaire de configuration .


Exécution de Selenoid à l'aide du gestionnaire de configuration et de la construction de Browsers.json


Si vous ne disposez pas d'un accÚs direct à Internet et aux images de docker que vous téléchargez via le registre:


 aerokube-cm selenoid start --force --browsers "android:6.0;chrome:78" --args "-session-attempt-timeout 2m -service-startup-timeout 2m" --registry -docker-registry 

Si vous avez un accĂšs direct Ă  Internet.


 aerokube-cm selenoid start --force --browsers "android:6.0;chrome:78" --args "-session-attempt-timeout 2m -service-startup-timeout 2m" 

La clé --args "-session-attempt-timeout 2m -service-startup-timeout 2m" nécessaire si vous avez une grande apk installée depuis longtemps.


Le --force Ă©crase le fichier Browsers.json


Étant donnĂ© que Selenoid Configuration Manager ne sait pas encore comment configurer Browsers.json pour Chrome mobile, vous devez le corriger vous-mĂȘme.


Par défaut, Browsers.json est généré dans le répertoire ~ / .aerokube / selenoid.


Le fichier Browsers.json résultant pour tester les applications Android et Chrome à l'intérieur de l'émulateur Android.


 { "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" } } } } 

Jusqu'à présent, la version chrome mobile est derriÚre la version chrome ordinaire.
Téléchargez l'image de Chrome mobile


 docker pull selenoid/chrome-mobile:75.0 

Changement de Browsers.json


Lors de la modification du fichier Browsers.json, Selenoid doit ĂȘtre rechargĂ©


 aerokube-cm selenoid stop 

 aerokube-cm selenoid start 

Configuration de rechargement
Vous pouvez faire une configuration de rechargement. DĂ©tails sur le lien:
https://aerokube.com/selenoid/latest/#_reloading_configuration


Vérifiez que le conteneur Docker a démarré et que les images ont été téléchargées.


 docker ps docker images 


Exécution de l'interface utilisateur Selenoid à l'aide du gestionnaire de configuration


 aerokube-cm selenoid-ui start --registry https://docker-registry 

Ou


 aerokube-cm selenoid-ui start 

Vérifiez que le conteneur Docker a démarré et que les images ont été téléchargées.


 docker ps docker images 


Nous allons Ă  selenoid-ui sur ip-where-you-ran-selenoid-and-selenoid-ui: 8080


Vous devriez avoir 2 voyants verts CONNECTÉS allumĂ©s et Ă©crits en android et en chrome.



Pour accéder à Android à partir du systÚme hÎte, ajoutez les lignes suivantes au fichier / etc / hosts:


 ip-- hypervisor 

Test de démonstration


Téléchargez https://github.com/aerokube/demo-tests


Dans les trois fichiers java, changez le chemin dans RemoteWebDriver en hyperviseur (vous devez changer la capture d'Ă©cran).



ou Ă  une autre adresse oĂč vous avez commencĂ© selenoid.


Dans le fichier AndroidRemoteApkTest.java, changez le chemin oĂč vous pouvez tĂ©lĂ©charger votre APK.


 device.setCapability("app", "http://ci.example.com/game2048.apk"); 

sur


device.setCapability ("app", " http: // link-to-your-apk ");


ou


 device.setCapability("app", "http://hypervisor:8000/game2048.apk"); 

Si vous faites référence à localhost à partir de docker, vous obtiendrez cette erreur, car vous essayez d'accéder à l'hÎte local du serveur principal à partir du réseau de docker:


 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 

La façon de rendre disponible pour le téléchargement vos fichiers locaux sera plus faible.


Dans le fichier DemoTest.java, ajoutez setCapability pour exécuter Chrome sur Android pour obtenir quelque chose comme ça.



Dans chaque fichier java, vous pouvez activer ou désactiver l'enregistrement vidéo, la visualisation ou la gestion à distance via VNC et la connexion à un fichier. Pour désactiver l'option, vous devez ajouter 2 barres obliques au début de la ligne.



Pour rendre les fichiers du répertoire actuel disponibles au téléchargement, vous pouvez exécuter le service static-server-in-dir dans la console actuelle:


 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 

Exécution de tests


Dans le répertoire demo-tests, exécutez les tests:


Si vous devez spécifier des paramÚtres et que vous utilisez des proxys maven (Nexus, Artifactory)


 mvn -s settings.xml clean test 

Si nous courons avec un accĂšs direct Ă  Internet et sans aucun paramĂštre


 mvn clean test 

La vitesse


Le temps de déploiement total de l'émulateur Android et le lancement de 1 test prend moins de 1 minute.


Bugs connus


https://github.com/aerokube/demo-tests/issues/5


Enregistrement de test


AndroidDemoTest.java:



AndroidRemoteApkTest.java:



DemoTest.java:



Recherchez l'emplacement souhaité dans une application mobile à l'aide d'Appium


Appium est un outil multiplateforme, c'est-à-dire vous permet d'écrire des tests pour les plateformes mobiles (iOS, Android, Windows) à l'aide de l'API. Il s'agit de l'un des outils les plus utilisés pour tester les applications de régression sur les smartphones et les tablettes.


Téléchargez et exécutez Appium


Allez dans File -> New Session Window



Dans le champ Remote host , spécifiez l'adresse du serveur sur lequel Selenoid est exécuté.


Dans le champ Remote Port , spécifiez le port sur lequel Selenoid s'exécute - généralement 4444.


Dans le champ Remote Path , spécifiez /wd/hub


Dans Desired Capabiliting spécifiez les Capabilities vous avez besoin.


Le JSON minimum est le suivant:


 { "browserName": "chrome", "browserVersion": "mobile-75.0", "enableVNC": true } 

AprÚs le début de la session, vous aurez cette image:



Vous pouvez maintenant explorer / rechercher l'emplacement dont vous avez besoin.



Conversations par télégramme:


https://t.me/aerokube - chat Aerokube


https://t.me/atinfo_chat - chat pour les ingénieurs d'automatisation des tests

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


All Articles