Configurar pruebas automáticas de una aplicación híbrida

En este artículo quiero compartir mi experiencia en la solución del problema de lanzar pruebas automatizadas de una aplicación móvil en Android.

Lo que contaré sobre:


  • Cómo ejecutar un entorno de prueba automatizado con Appium
    (PC OS - Windows 10)
  • Cómo evitar algunos errores que ocurren al intentar ejecutar pruebas en una aplicación híbrida
  • Algunos comandos básicos para ejecutar las pruebas más simples. Usaremos Java y JavaScript

Desafío


Automatice las pruebas de aplicaciones móviles híbridas.

Sobre la aplicación a probar:
PlataformaAndroid
MarcoAngular, Córdoba, Iónica
NavegadorPaso de peatones

Quizás estos son los puntos clave que influyeron en la configuración de la PC para ejecutar las pruebas.

Entorno de prueba


Utilizaremos Appium como herramienta de prueba automatizada.
En resumen, esta es una herramienta que le permite utilizar el servidor para enviar comandos al cliente sobre qué hacer y por qué.

Puede obtener información completa en el sitio web del desarrollador .

Empecemos

En un lugar conveniente para usted en el disco, cree la carpeta "Appium automation".

Por ejemplo:

C:\Appium automation 

Además en esta carpeta (C: \ Automatización de Appium) cree algunas carpetas más:
SDK de AndroidC: \ Automatización de Appium \ Android SDK
Android StudioC: \ Automatización de Appium \ Android Studio
APKC: \ Automatización de Appium \ APK
Appium libC: \ Automatización de Appium \ Appium Lib
Selenium libC: \ Automatización de Appium \ Selenium Lib

Si alguna de las aplicaciones / componentes que ha instalado, siguiendo las instrucciones, solo comprende la lógica de la relación, es decir, no es necesario reinstalar todo.

Llenar carpetas creadas y cargar otros componentes


1. Java SDK


Sigue el enlace y haz clic en Descargar:



A continuación, llegamos a la página de descarga para diferentes sistemas operativos, como Tengo Windows 10 x64, seleccione:



Después de descargar el archivo, ábralo y descomprima el archivo .exe-shnik (seleccione la ruta durante la instalación) en la carpeta:

 C:\Program Files\Java\jdk-12.0.1 

(el número de versión en el momento de la descarga puede variar)

2. Android Studio y Android SDK


Para descargar, siga el enlace .

Instalar en la carpeta:

 C:\Appium automation\Android Studio 

Durante el primer lanzamiento de Android Studio, deberá configurar el programa :

  • Tipo de instalación seleccione Personalizado, haga clic en Siguiente
  • Elija un tema que le guste, haga clic en Siguiente
  • Ubicación del SDK de Android especifique C: \ Automatización de Appium \ Android SDK, haga clic en Siguiente
  • La configuración del emulador se puede dejar en Recomendado, haga clic en Siguiente
  • Haga clic en Finalizar y espere a que se complete el proceso de instalación.

Cree un nuevo proyecto en Android Studio:

  • Haga clic en Iniciar un nuevo proyecto de Android Studio
  • Indique el Nombre, Ruta de su proyecto, o no puede cambiar nada y dejar el propuesto, haga clic en Siguiente
  • En la lista desplegable Teléfono y tableta, seleccione "API 23: Android 6.0 (Marshmallow), haga clic en Siguiente
  • Elija Actividad vacía, haga clic en Siguiente
  • Haga clic en siguiente
  • Haga clic en Finalizar

Instale las herramientas del SDK

En Android Studio, seleccione Herramientas - Administrador de SDK.

En la ventana que aparece, se seleccionará la sección del SDK de Android.



En la pestaña Plataformas SDK, seleccione la versión de Android en la que realizará las pruebas.
Y, en las herramientas del SDK, seleccione los elementos:

  • Android SDK Build-Tools
  • Emulador de Android
  • Android SDK Platform-Tools
  • Herramientas de Android SDK
  • Documentación para Android SDK
  • Repositorio de soporte

Haga clic en Aplicar o Aceptar y espere a que finalice la descarga e instalación de los componentes.



3. Crear variables de RUTA


Haga clic derecho en "Mi PC" - "Propiedades" - "Configuración avanzada del sistema".
En la ventana que se abre, en la pestaña "Avanzado", seleccione "Variables de entorno ..."

En el bloque "Variables del sistema", cree una nueva variable.





Primera variable

Nombre de variable - JAVA_HOME

El valor de la variable es

 C:\Program Files\Java\jdk-12.0.1 

(la ruta donde instaló jdk en el paso 1, en algunos casos puede ser que la carpeta Archivos de programa se llame Archivos de programa (x86))

Segunda variable

Nombre de variable - ANDROID_HOME

El valor de la variable es

 C:\Appium automation\Android SDK 

Adición variable de ruta

Busque la variable Ruta en la lista de variables del sistema y haga clic en "Cambiar ...".

Haga clic en "Crear" en la ventana que aparece y agregue las variables:

  • % ANDROID_HOME% \ emulator
  • % ANDROID_HOME% \ platform-tools
  • % ANDROID_HOME% \ tools
  • % ANDROID_HOME% \ tools \ bin

Como resultado, debe obtener 4 nuevas variables, después de lo cual debe hacer clic en Aceptar.



4. Appium


Descargar Appium:

  • Seguimos el enlace http://appium.io/
  • Haga clic en Descargar
  • Seleccionamos Appium-windows-1.13.0.exe (el número de versión en el momento de la carga puede variar)



Ejecute el archivo .exe descargado e instale Appium en su PC. Durante el proceso de instalación, solo tendrá que elegir instalar globalmente o para un usuario específico. Instalé globalmente desde no me importa

Descargando las bibliotecas de Appium:




Mueva el archivo .jar descargado a la carpeta

 C:\Appium automation\Appium Lib 




Mueva el archivo .jar descargado a la carpeta:

 C:\Appium automation\Appium Lib 





Mueva el archivo .jar descargado a la carpeta:

 C:\Appium automation\Appium Lib 

Descargue las bibliotecas Selenium:




Descomprima el archivo descargado en la carpeta:

 C:\Appium automation\Selenium Lib 

5. IntelliJ IDEA Community Edition


Para descargar, vaya al enlace https://www.jetbrains.com/idea/download
Cerca de la versión de Comunidad y haga clic en Descargar (esta es una versión gratuita, pero es suficiente para las pruebas automáticas).

La página de descarga tiene una comparación de las versiones Community y Ultimate.

Si desea comprar la versión Ultimate, ¡puede hacerlo con seguridad! Pero, una vez más, la versión comunitaria será suficiente.

Ejecute el archivo .exe descargado e instálelo (simplemente haga clic en Siguiente hasta que el programa comience a instalarse)

Primer lanzamiento de IntelliJ IDEA

  • Seleccione "No importar la configuración"
  • Aceptamos el acuerdo de licencia
  • Elige un tema
  • Haga clic en siguiente
  • Haga clic en Comenzar a usar IntelliJ IDEA

Crear un proyecto en IntelliJ IDEA

  • Elija Crear nuevo proyecto
  • Especifique la ruta al SDK de Java
    • Haga clic en nuevo ...
    • Especifique la ruta al SDK de Java C: \ Archivos de programa \ Java \ jdk-12.0.1 cargado previamente
  • Haga clic en siguiente
  • Marque la casilla "Crear proyecto desde plantilla"
  • Haga clic en siguiente
  • Especifique el nombre del proyecto y la ubicación para guardar
  • Haga clic en Finalizar

Configuraciones para el proyecto creado

Elija Archivo - Estructura del proyecto ...

En la ventana que aparece, seleccione Módulos - Dependencias - "+" - JAR o directorios ...



Y agregamos al proyecto todas las bibliotecas cargadas previamente.



Haz clic en Aceptar.

Ahora el proyecto está listo para ejecutar pruebas.

6. Configuración del dispositivo Android


Dispositivo real
Necesita un cable USB para conectar el dispositivo a la computadora y al teléfono inteligente.

Para comenzar, vaya a "Configuración" - "Acerca del teléfono" en el teléfono inteligente.

Además, en diferentes teléfonos inteligentes, todo es diferente, pero la conclusión es que debe encontrar el "Número de serie" y hacer clic en él 5-7 veces hasta que aparezca la tostadora que dice "Ahora es un desarrollador" (el texto de la notificación puede diferir de un modelo a otro)

Después de esta manipulación, la sección "Para desarrolladores" aparecerá en la configuración de su teléfono. También puede ocultarse de un modelo a otro en diferentes secciones, por ejemplo, en algún lugar estará en "Configuración" - "Para desarrolladores", y en algún lugar "Configuración" - "Características especiales" - "Para desarrolladores", etc. .

Debe ir a la sección "Para desarrolladores" y activar "Depuración de USB".

Cuando conecte su teléfono inteligente a través de USB, verá un mensaje sobre el permiso de depuración de USB, puede marcar "Confiar en este dispositivo" y hacer clic en "Aceptar", luego este mensaje no aparecerá nuevamente la próxima vez que el teléfono esté conectado a esta PC.
Todo su teléfono inteligente está listo para funcionar en pruebas automáticas.

Dispositivo virtual

También puede crear un dispositivo virtual a través de Android Studio, luego no necesitará conectar el dispositivo real a la computadora.

Pero en un dispositivo virtual, las pruebas pueden funcionar más lentamente que en uno real.

Para crearlo, abra Android Studio, luego:

  • "Herramientas" - "Administrador AVD" - "+ Crear dispositivo virtual ..."
  • Elija un dispositivo, haga clic en Siguiente
  • Elija la versión deseada de Android, haga clic en Siguiente
  • Especifique el nombre del dispositivo, haga clic en Finalizar

Después de las manipulaciones realizadas en la sección "Herramientas" - "Administrador AVD", verá el dispositivo creado. Con el icono verde "Reproducir", puede iniciar el dispositivo.

¿Cómo verificar que su PC vio el dispositivo conectado?

Ejecute la línea de comando ("Inicio" - "Utilidades - Windows" - "Símbolo del sistema")
E ingrese el comando de dispositivos adb.

Como resultado, si el dispositivo está conectado con la función "Depuración USB" habilitada, recibirá el dispositivo conectado y su UDID (número de serie):

 List of devices attached UDID device 

7. Estamos escribiendo un proyecto.


Añadir importación.

 package name; import java.util.*; import io.appium.java_client.android.AndroidDriver; import io.appium.java_client.android.AndroidElement; import io.appium.java_client.remote.MobileCapabilityType; import org.openqa.selenium.*; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.JavascriptExecutor; import java.net.MalformedURLException; import java.net.URL; import java.util.concurrent.TimeUnit; 

Registramos el servidor y donde tendrá que enviar solicitudes

Instalar el controlador de Android:

 AndroidDriver<AndroidElement> driver = null; 

Establecemos los parámetros (propiedades):

 DesiredCapabilities capabilities = new DesiredCapabilities(); 

El nombre del dispositivo (puede encontrarlo para el dispositivo real en "Configuración" - "Acerca del teléfono", y para las "Herramientas" virtuales - "Administrador AVD" - el campo "Nombre"):

 capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "MyPhone"); 

Enlace al APK que deberá iniciarse (.apk debe ser una compilación de depuración para que usted y appium puedan inspeccionar las aplicaciones):

 capabilities.setCapability(MobileCapabilityType.APP, "C:\\Appium automation\\APK\\My-debug-Apk.apk"); 

Inicie el controlador Appium:

 try { driver = new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); } catch (MalformedURLException e) { System.out.println(e.getMessage()); } 

Este código será suficiente para iniciar su aplicación en el dispositivo conectado.

Equipos adicionales

Para suspender el proyecto por un cierto período de tiempo, por ejemplo, 8 segundos. (el valor se indica en milisegundos). Puede ser necesario si necesita esperar a que se cargue la página o la aplicación:

 Thread.sleep(8000); 

Obtenemos ContextHandles, donde entendemos con qué estamos trabajando ahora (NATIVE_APP o WEBVIEW):

 Set<String> contextNames = driver.getContextHandles(); for (String contextName : contextNames) { System.out.println(contextName); } 

Asigne Contexto al último valor recibido en la matriz. Esto le permitirá cambiar correctamente a WEBVIEW, tk. Contexto predeterminado = NATIVE_APP:

 driver.context((String) contextNames.toArray()[contextNames.toArray().length - 1]); 

Controlamos la interfaz de la aplicación.

Porque estamos trabajando con una aplicación híbrida, es decir los elementos de la aplicación se representan en WEBVIEW y no en NATIVE_APP, por lo general, tendremos que usar un tipo de búsqueda para el elemento findElementByCssSelector.

Haga clic en el botón Aceptar:

 driver.findElementByCssSelector(".button-ok").click(); 

- donde .button-ok es la clase de elemento. También puede usar la ID del elemento exactamente.

Enviamos el valor en el campo, por ejemplo, tiene una búsqueda y desea enviar el valor "Cine" allí.

 driver.findElementByCssSelector(".search-input").sendKeys(""); 


Haga clic para encontrar:

 driver.findElementByCssSelector(".search-button").click(); 

De esta manera, ya puede controlar su aplicación.

Tarde o temprano, se encontrará con eso, no todo el contenido se coloca en la pantalla del teléfono inteligente, es decir, Necesitas desplazarte. Si un elemento no está visible en la pantalla durante el proceso de prueba, Appium arrojará un error de que no ve el elemento y lo más probable es que todas las pruebas posteriores estén cubiertas de errores.

Para desplazarse en la pantalla, puede ejecutar la función JS scrollIntoView en Java.

 ((JavascriptExecutor) driver).executeScript("document.querySelector('.button-ok').scrollIntoView({block: \"end\", behavior: \"smooth\"});"); 

En mi caso, esto le permitirá ir al botón Aceptar.

Puede ser un incidente que haya escrito todo correctamente, pero no se realiza el desplazamiento.

Intente vincularse a otros elementos en la pantalla y primero es mejor hacerlo a través de la consola en Chrome: inspeccione, de modo que tenga la seguridad de que comprende que cuando se une a este elemento, el desplazamiento funcionará.

Puede ir al paso 8 y si todo funciona para usted, ¡esto es genial!
Pero tuve otra trampa.
Se llama Crosswalk Browser.

Cuando comencé el proyecto, constantemente recibía un error:

 “Make sure the app has its webview configured for debugging” 

Esto significa que no se realizó una prueba.

Lo que debe verificar en este caso:


Después de estas manipulaciones, agregue otras capacidades a su proyecto.

 capabilities.setCapability("chromedriverExecutable", "C:\\node_modules\\appium-with-crosswalk-fix\\chromedriver\\2.28\\chromedriver.exe"); 

- donde C: \\ node_modules \\ appium-with-crosswalk-fix \\ chromedriver \\ 2.28 \\ chromedriver.exe
esta es la forma de arreglar el controlador cromado

Entonces su proyecto se verá así:

 package name; import java.util.*; import io.appium.java_client.android.AndroidDriver; import io.appium.java_client.android.AndroidElement; import io.appium.java_client.remote.MobileCapabilityType; import org.openqa.selenium.*; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.JavascriptExecutor; import java.net.MalformedURLException; import java.net.URL; import java.util.concurrent.TimeUnit; public class Main { public static void main(String[] args) throws InterruptedException { AndroidDriver<AndroidElement> driver = null; DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "MyPhone"); capabilities.setCapability(MobileCapabilityType.APP, "C:\\Appium automation\\APK\\My-debug-apk.apk"); capabilities.setCapability("chromedriverExecutable", "C:\\node_modules\\appium-with-crosswalk-fix\\chromedriver\\2.28\\chromedriver.exe"); try { driver = new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); } catch (MalformedURLException e) { System.out.println(e.getMessage()); } Set<String> contextNames = driver.getContextHandles(); for (String contextName : contextNames) { System.out.println(contextName); } driver.context((String) contextNames.toArray()[contextNames.toArray().length - 1]); Thread.sleep(8000); driver.findElementByCssSelector(".search-input").sendKeys(""); driver.findElementByCssSelector(".search-button").click(); } 

Tal proyecto:

  • Instala tu aplicación en el dispositivo.
  • Encuentra el campo de búsqueda en la página de la aplicación
  • Traerá allí el significado de "Cine"
  • Haga clic en el botón "Buscar"

8. Iniciamos el proyecto.


Hay varios puntos principales para que comience un proyecto:

  • Inicie el servidor Appium (elemento 4)
    • Use el atajo para iniciar Appium
    • Haga clic en "Iniciar servidor"
  • Conecte el dispositivo a una PC o inicie un dispositivo virtual (elemento 6)
  • Configurar un proyecto (p. 5 y p. 7)
  • Haga clic en Ejecutar (o en la barra de herramientas IntelliJ IDEA, o Ejecutar - Ejecutar 'Principal')
  • Disfruta el resultado

Bueno, entonces puedes probar la configuración, la información necesaria está en el sitio web oficial del desarrollador .
Appium también se puede usar para probar aplicaciones iOS.

Quería escribir brevemente, pero resultó como siempre.

Gracias a todos los que leyeron hasta el final, ¡espero que les haya sido útil!

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


All Articles