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 .
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