Probar aplicaciones de Android usando selenoid. Buscar ubicación en una aplicación móvil con Appium

Soy de Luxoft
Prefacio de la publicación :


Selenoid es un programa que le permite controlar navegadores y emuladores de Android utilizando controladores especiales. Capaz de ejecutar cada uno de ellos de forma aislada en el contenedor Docker.


La idea principal de Selenoid es lanzar un nuevo contenedor para cada sesión (iniciar un nuevo navegador o emulador) y detenerlo inmediatamente después de cerrar la sesión.


Selenoid le permite mantener una carga alta sin costos de recursos adicionales.


Esta publicación lanzará pruebas simples en un emulador de Android .


Preparación


Primero verifique que su sistema pueda ejecutar máquinas virtuales.


La virtualización de hardware debe ser compatible con su procesador. Esto significa que se requieren extensiones de procesador IntelVT o AMDV. Para verificar que el procesador sea compatible con uno de estos, ejecute el comando:


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

Docker


Docker debe estar instalado y ejecutándose en su sistema operativo.


Instalar selenoide


Si tiene un sistema operativo basado en Redhat, puede usar mi repositorio para instalar el administrador de configuración .


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

Si no tiene un sistema operativo basado en Redhat, puede descargar y usar el binario del administrador de configuración .


Ejecutar Selenoid usando Configuration Manager y compilando browsers.json


Si no tiene acceso directo a Internet ni a las imágenes acoplables que descarga a través del registro:


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

Si tiene acceso directo a Internet.


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

La clave --args "-session-attempt-timeout 2m -service-startup-timeout 2m" necesaria si tiene un apk grande instalado durante mucho tiempo.


El --force sobrescribe el archivo browsers.json


Como el administrador de configuración de Selenoid aún no sabe cómo configurar browsers.json para Chrome móvil, debe solucionarlo usted mismo.


Por defecto, browsers.json se genera en el directorio ~ / .aerokube / selenoid.


El archivo resultante browsers.json para probar aplicaciones de Android y Chrome dentro del emulador de 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" } } } } 

Hasta ahora, la versión móvil de Chrome está detrás de la versión normal de Chrome.
Descargar la imagen de Chrome móvil


 docker pull selenoid/chrome-mobile:75.0 

Cambio de browsers.json


Al cambiar el archivo browsers.json, se debe volver a cargar selenoid


 aerokube-cm selenoid stop 

 aerokube-cm selenoid start 

Configuración de recarga
Puede hacer una configuración de recarga. Detalles en el enlace:
https://aerokube.com/selenoid/latest/#_reloading_configuration


Verifique que el contenedor acoplable se haya iniciado y que las imágenes se hayan descargado.


 docker ps docker images 


Ejecutar la IU de Selenoid con el administrador de configuración


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

O


 aerokube-cm selenoid-ui start 

Verifique que el contenedor acoplable se haya iniciado y que las imágenes se hayan descargado.


 docker ps docker images 


Vamos a selenoid-ui en ip-where-you-ran-selenoid-and-selenoid-ui: 8080


Debes tener 2 luces verdes CONECTADAS y escritas en Android y Chrome.



Para acceder a Android desde el sistema host, agregue las siguientes líneas al archivo / etc / hosts:


 ip-- hypervisor 

Prueba de demostración


Descargar https://github.com/aerokube/demo-tests


En los tres archivos java, cambie la ruta en RemoteWebDriver a hipervisor (debe cambiar la captura de pantalla).



o a otra dirección donde comenzó selenoid.


En el archivo AndroidRemoteApkTest.java, cambie la ruta donde puede descargar su APK.


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

en


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


o


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

Si hace referencia a localhost desde la ventana acoplable, tendrá este error, ya que está intentando acceder al localhost del servidor principal desde la red de la ventana acoplable:


 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 

Cómo poner a disposición para descargar sus archivos locales será menor.


En el archivo DemoTest.java agregue setCapability para ejecutar Chrome en Android para obtener algo como esto.



En cada archivo java, puede habilitar o deshabilitar la grabación de video, la visualización remota o la administración a través de VNC e iniciar sesión en un archivo. Para deshabilitar la opción, debe agregar 2 barras al comienzo de la línea.



Para que los archivos del directorio actual estén disponibles para descargar, puede ejecutar el servicio static-server-in-dir en la consola actual:


 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 

Ejecutando pruebas


En el directorio demo-tests, ejecute las pruebas:


Si necesita especificar la configuración y utiliza proxys maven (Nexus, Artifactory)


 mvn -s settings.xml clean test 

Si corremos con acceso directo a Internet y sin ninguna configuración


 mvn clean test 

Velocidad


El tiempo total de implementación del emulador de Android y el lanzamiento de 1 prueba lleva menos de 1 minuto.


Errores conocidos


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


Registro de prueba


AndroidDemoTest.java:



AndroidRemoteApkTest.java:



DemoTest.java:



Busque la ubicación deseada en una aplicación móvil con Appium


Appium es una herramienta multiplataforma, es decir le permite escribir pruebas para plataformas móviles (iOS, Android, Windows) utilizando la API. Esta es una de las herramientas más utilizadas para aplicaciones de prueba de regresión en teléfonos inteligentes y tabletas.


Descargue y ejecute Appium


Vaya a File -> New Session Window



En el campo Remote host , especifique la dirección del servidor donde se está ejecutando Selenoid.


En el campo Remote Port , especifique el puerto en el que se ejecuta Selenoid, generalmente 4444.


En el campo Remote Path , especifique /wd/hub


En Desired Capabiliting especifique las Capabilities que necesita.


El JSON mínimo es este:


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

Después del inicio de la sesión, tendrá esta imagen:



Ahora puede explorar / buscar la ubicación que necesita.



Telegram chats:


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


https://t.me/atinfo_chat - chat para ingenieros de automatización de pruebas

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


All Articles