Diez minutos para comprender la herramienta de automatización de aplicaciones más rápida, uiautomator2 (desde el nivel básico hasta el dominio)

Contenido: Guía

prefacio

1. Introducción

2. Implementación del entorno

3. Escribe guiones para la página de inicio de Baidu Tieba.

Cuatro, comparación de velocidad de carrera de uiautomator2 y appium


prefacio

Creo que muchas personas que han utilizado Appium para la automatización de aplicaciones están profundamente conmovidas:

  • Appium funciona lentamente y tarda mucho tiempo.
  • Cuando uiautomatorviewer localiza elementos, debes apagar el servidor appium
  • Obtener brindis en una versión inferior de appium requiere cambiar el nombre de automatización

Ahora existe una herramienta de prueba automatizada , uiautomator2, que evita casi a la perfección los problemas anteriores. Fácil de aprender y lo suficientemente amigable para los principiantes. Esta vez presentamos esta herramienta, para que puedas dominarla rápidamente en diez minutos.

Dirección del video tutorial de demostración de combate real de prueba de automatización de aplicaciones de combate real y uiautomator2: ¡ El tutorial de combate real del proyecto de prueba automatizada de aplicaciones [Python + appium] más detallado!

1. Introducción

uiautomator2 es una versión mejorada de uiautomator. uiautomator es una biblioteca Java desarrollada por Google para pruebas automatizadas de Android. uiautomator2 encapsula la interfaz de uiautomator en una biblioteca Python. Entonces el lenguaje que soporta es Python.

Las principales ventajas se resumen a continuación: 

  • La construcción del entorno es simple y conveniente.
  • ejecución rápida
  • El posicionamiento de los elementos de la interfaz de usuario es conveniente, fácil de usar y se visualiza bien
  • Hacer tostadas es muy sencillo

Según la documentación oficial, se requiere:

  • Versión de Android 4.4+
  • Versión de Python 3.6+

2. Implementación del entorno

1. Instale adb y configure las variables de entorno

No entraré en detalles aquí, hay muchos tutoriales en Internet. Después de la instalación, verifique la información de la versión. Si aparece el número de versión específico, la instalación se realizó correctamente.

2. Instale la biblioteca uiautomator2 de Python 

Orden:

instalación de pip -U uiautomator2

3. Instale el agente atx

El propósito de este paso es descargar atx-agent desde github y enviarlo al teléfono móvil como servidor, así que primero asegúrese de que los dispositivos adb puedan ver la conexión en el emulador. Abra un simulador de dios de la noche aquí como demostración.

Comience a instalar atx-agent, comando:

inicio de python-m uiautomator2

Una vez que la instalación sea exitosa, podrá ver un ícono de automóvil en el escritorio del emulador, este es atx.apk

4. Instalar weditor

Orden:

instalación de pip -U editor

Weditor es un visor de elementos de interfaz de usuario basado en navegador. Una vez que la instalación sea exitosa, haremos una demostración.

Al ingresar weditor en la línea de comando, se abrirá automáticamente el navegador, ingresará el número de serie del dispositivo del emulador en la página, hará clic en Conectar y luego hará clic en Volcar jerarquía para actualizar y podrá ver la interfaz del emulador.

Abra Baidu Tieba, aparecerá la ventana emergente de la política de privacidad, haga clic en el botón Actualizar en el visor de la interfaz de usuario (por supuesto, también puede abrir el tiempo real, que se actualizará automáticamente), haga clic con el mouse para aceptar y estará Puede ver algunos métodos de posicionamiento de elementos a la derecha, como ResourceId, XPath, etc. ¿Es muy conveniente? Lo más conveniente es que puede abrir el visor de interfaz de usuario de weditor al mismo tiempo que se está ejecutando.

3. Escribe guiones para la página de inicio de Baidu Tieba.

Aquí vamos paso a paso, escribiendo los casos de uso de pruebas automatizadas en Baidu Tieba, para ilustrar algunos de los métodos que nos proporciona la herramienta uiautomator2. Para que el código sea más intuitivo, aquí no se utiliza el modo PO y cada paso se escribe directamente en un módulo.

1. Primero cree un proyecto u2-autotest y luego cree un módulo test_tieba.py debajo de él.

2. Importe la biblioteca uiautomator2, tome el alias u2 y luego use el método connect_usb () de u2 para conectarse. El parámetro de este método es el número de serie del dispositivo (se puede obtener a través de dispositivos adb). El objeto de dispositivo devuelto después de que la conexión fue exitosa, lo llamamos d, ¿cómo verificar si está conectado? Utilice d.info para obtener la información básica del dispositivo, lo que indica que la conexión se ha realizado correctamente

3. Inicie la aplicación especificada, la sintaxis es:

d.app_start("nombre del paquete especificado")

Cómo obtener el nombre del paquete, puede abrir la aplicación y luego imprimir d.info, el nombre del paquete actual en el resultado es el nombre del paquete.

4. Luego haga clic en Baidu Tieba , la primera página que aparece es la página de política de privacidad, abra el visor de interfaz de usuario de weditor, después de actualizar, mueva el mouse al botón aceptar, puede ver que hay dos métodos de posicionamiento para elegir, uno es ResourceId, uno es El tipo es XPath, aquí seleccione ResourceId

El método de posicionamiento de ResourceId en uiautomator2 es el siguiente:

d(resourceId="expresión de posicionamiento de elementos")

Pero pensemos en ello, ¿podemos escribir directamente así?

La respuesta es no, porque el control del elemento no aparecerá inmediatamente después de iniciar la aplicación, por lo que debe esperar un tiempo. En uiautomator2, puede usar el tiempo de espera obligatorio.sleep(), o usar el wait() implícito, que es similar al apio y al selenio es consistente.

Sintaxis de espera implícita: 

d.implicitly_wait (tiempo de espera) #la unidad es s

Organice el código, agregue el tiempo de espera implícito de 10 segundos. La espera implícita solo debe agregarse una vez y es universal.

No importa qué elemento esté esperando, el tiempo de espera es de 10 segundos, pero si el primer elemento aparece en 2 segundos y el segundo elemento aparece en 5 segundos, entonces el tiempo de espera real del primer elemento es de solo 2 segundos y el segundo es de solo 5 segundos. el elemento Cuando aparezca, se realizará el siguiente paso, en lugar de esperar el tiempo establecido como la espera forzada. Por lo tanto, la espera implícita ahorra relativamente tiempo.
 

5. Luego de hacer clic en Aceptar, ingresamos a la página de pantalla deslizante.

La operación de deslizar la pantalla es el método swipe() en uiautomator2, similar a appium, sx, ex y sy, y representan las coordenadas del punto inicial y final respectivamente.

d.deslizar(sx, sy, ex, ey, 0.5)

Entonces, ¿cómo obtener las coordenadas del punto inicial y final?

Para adaptarse a diferentes resoluciones, se puede obtener el tamaño de la pantalla y luego multiplicarlo por coeficientes respectivamente.

La sintaxis para obtener el tamaño de la pantalla es:

d.tamaño_ventana()

Vemos que la pantalla deslizante en la página de inicio debe deslizarse hacia la izquierda dos veces, para que podamos escribir un bucle for. Aquí hay algunos puntos a tener en cuenta:

  • Para mejorar la estabilidad del deslizamiento de la pantalla, debe agregar espera obligatoria, espere 1 segundo
  • La distancia de deslizamiento debe ser lo más grande posible. Por ejemplo, los puntos inicial y final del eje x se pueden establecer en 0.9, 0.1 respectivamente. Si lo configura en 0.9, 0.5, es probable que la distancia de deslizamiento sea demasiado pequeña. , lo que resulta en que no se deslice
  • uiautomator2 también proporciona una función de deslizamiento extendida, swipe_ext(), que no requiere coordenadas, solo proporciona direcciones como "izquierda", "derecha", "arriba", "abajo". Después de experimentar, siento que no es estable, así que sigo usando el método convencional.

6. Desliza el dedo hasta la última página , haz clic en Experimentar ahora y podrás ingresar a la página de inicio.

Aquí puede usar ResourceId o descripción o XPath, aquí hay una demostración del uso de descripción.

La sintaxis para el posicionamiento de descripciones en uiautomator2 es:

d(descripción="expresión de posicionamiento del elemento")

La descripción también se llama "content-desc", que generalmente es única.

7. En la página de inicio, puedes ver que hay cuatro columnas en la esquina superior izquierda: seguir, recomendar, tema y transmisión en vivo, elegimos recomendación como elemento de afirmación.

Al ver que la recomendación tiene un valor de texto, ¿uiautomator2 admite texto como método de posicionamiento de elementos?

DE ACUERDO

d(text="expresión de posicionamiento de elementos")

Luego puede usar el método get_text() para obtener el valor del texto y usar afirmar para afirmar.

8. Después de ejecutar un caso de uso, es necesario detener la aplicación y limpiar el entorno. Aquí, use los métodos app_stop() y app_clear()

d.app_stop('nombre del paquete especificado') 

d.app_clear('nombre del paquete especificado')

En este momento, hemos terminado de escribir un caso de uso completo. Por supuesto, para la demostración, omití muchas cosas, como el modo PO, pytest, log, report, etc.

Cuatro, comparación de velocidad de carrera de uiautomator2 y appium

Aquí cambié el código, usando uiautomator2 y appium para ejecutar el caso de uso de la búsqueda de Baidu Tieba al mismo tiempo, los pasos son los mismos, el tiempo de espera es el mismo y veo qué herramienta de automatización es más rápida en la misma situación.

Los hechos han demostrado que, en las mismas circunstancias, uiautomator2 tarda aproximadamente 1 minuto, mientras que appium tarda 1 minuto y 16 segundos, que es aproximadamente 16 segundos más lento que uiautomator2. Por supuesto, cuantos más casos de uso y más largo sea el proceso, más obvio será el efecto. 

Finalmente, se resume la sintaxis principal de uiautomator2. Para obtener más funciones, lea el documento oficial: http://8rr.co/Ngbk

Ahora que existe esa oportunidad, los invito a hacer clic en la tarjeta pequeña a continuación, grupo Moyu de pruebas de software, todos pueden discutir e intercambiar pruebas de software juntos, aprender técnicas de prueba de software, entrevistas y otros aspectos de las pruebas de software, y también habrá aprenda recursos de documentos para obtener más habilidades de prueba, avancemos juntos en el desarrollo de pruebas / pruebas automatizadas de Python y avancemos hacia un salario alto.

Me gustaría daros una palabra para animaros unos a otros: ¡cuando no somos lo suficientemente capaces, lo primero que debemos hacer es la formación interna! ¡Cuando seamos lo suficientemente fuertes, podremos salir! 

Supongo que te gusta

Origin blog.csdn.net/weixin_67553250/article/details/124228308
Recomendado
Clasificación