Tutorial de UIAutomatorViewer: Inspector de Android Pruebas

โšก Resumen inteligente

UIAutomatorViewer es un inspector grรกfico incluido con el Android SDK que captura una captura de pantalla del dispositivo, renderiza la jerarquรญa de vistas y expone los atributos. Appium Necesita localizar botones, campos y etiquetas de forma fiable.

  • ๐Ÿ”˜ Quรฉ hace: Escanea una vida Android La pantalla muestra la jerarquรญa de nodos junto a una hoja de propiedades del elemento seleccionado.
  • โ˜‘๏ธ Donde vive: El lanzador se encuentra en el Android Carpeta de herramientas SDK como uiautomatorviewer.bat y se inicia un Java ventana de escritorio.
  • โœ… Flujo de captura: Active las opciones de desarrollador, conecte el dispositivo mediante USB y, a continuaciรณn, pulse Captura de pantalla del dispositivo para cargar la pantalla actual.
  • ๐Ÿงช Mapa de atributosping: El texto se convierte en nombre, resource-id se convierte en id, class se convierte en className y content-desc se convierte en el id de accesibilidad.
  • ๐Ÿ› ๏ธ Soluciรณn de Problemas: El mensaje โ€œNo Android El mensaje "Los dispositivos fueron detectados por adb" casi siempre apunta a un cable, un controlador o una configuraciรณn de depuraciรณn.
  • ๐Ÿ“Š Opciรณn moderna: Appium El inspector cubre Android y iOS, y sigue estando disponible despuรฉs de que se retirara el paquete de herramientas SDK anterior.

Inspector UIAutomatorViewer para Android prueba de aplicaciones

ยฟQuรฉ es UIAutomatorViewer?

UIAutomatorViewer es una herramienta GUI para escanear y analizar los componentes de la interfaz de usuario de un Android aplicaciรณn. Para automatizar cualquier Android aplicaciรณn usando Appium, un usuario necesita identificar los objetos en la AUT (Aplicaciรณn bajo prueba). Con UIAutomatorViewer puede inspeccionar la interfaz de usuario de una Android Aplicaciรณn para averiguar la jerarquรญa y ver diferentes propiedades (id, textoโ€ฆ) del elemento.

Mientras ejecuta scripts de automatizaciรณn, Appium Utiliza UIAutomatorViewer para identificar las distintas propiedades del objeto y, a partir de ellas, identificar el objeto deseado. Esta idea โ€”leer el atributo en el inspector y reutilizarlo como localizador en el scriptโ€” es la que se explica en detalle en el resto de esta pรกgina.

La captura de pantalla que aparece a continuaciรณn muestra la herramienta en su estado de funcionamiento normal: la pantalla del dispositivo capturada a la izquierda, el รกrbol de nodos en la parte superior derecha y la hoja de propiedades del nodo seleccionado debajo.

Ventana de UIAutomatorViewer que muestra la pantalla del dispositivo capturada, el รกrbol de jerarquรญa de nodos y el panel de detalles del nodo.

Requisitos previos para usar UIAutomatorViewer

El inspector lee la pantalla en tiempo real de un telรฉfono real o un emulador, por lo que es necesario realizar una pequeรฑa configuraciรณn antes de que la ventana muestre algo.

  • A Java Kit de desarrollo: uiautomatorviewer es un Java La aplicaciรณn de escritorio se inicia mediante un script por lotes, por lo que es necesario tener instalado un JDK y que este sea accesible en la ruta del sistema.
  • El Android SDK: El visor se incluye dentro del SDK. carpeta, por lo que el SDK debe instalarse antes de que el lanzador exista en el disco.
  • Herramientas de plataforma y adb: El espectador habla con el dispositivo a travรฉs del Android Debug Bridge, asรญ que adb Debe estar instalado y poder ver el telรฉfono.
  • Opciones para desarrolladores y depuraciรณn USB: Ambas opciones deben estar activadas en la configuraciรณn del dispositivo; de lo contrario, adb nunca mostrarรก el dispositivo en la lista.
  • Un cable USB con capacidad de transferencia de datos y un controlador: un cable solo de carga o un controlador del fabricante faltante en Windows, produce una lista de dispositivos vacรญa.
  • La aplicaciรณn bajo prueba: La aplicaciรณn debe estar instalada y abierta en el dispositivo, ya que el inspector captura todo lo que se muestra en la pantalla.

Una vez configurados esos seis elementos, el paso de descarga es breve.

Cรณmo descargar e instalar UIAutomatorViewer

UIAutomatorViewer forma parte de Android Administrador de SDK y estarรก accesible una vez que instale el administrador de SDK. Descargue e instale el Android SDK de el oficial Android Studio Pรกgina de descarga.

Una vez que la Android El SDK estรก instalado, navegue por esta ruta:

c:\users\<username>\AppData\Local\Android\sdk\tools

Observarรก un archivo por lotes con este nombre:

uiautomatorviewer.bat

Double Haz clic en รฉl para abrir la interfaz grรกfica de usuario de UIAutomatorViewer. La lista de carpetas se ve como la que aparece a continuaciรณn, con el archivo por lotes junto a las demรกs herramientas del SDK.

Android carpeta de herramientas SDK en Windows Explorador que contiene el lanzador por lotes uiautomatorviewer

โš ๏ธ Nota de versiรณn: AndroidLa propia documentaciรณn heredada de UI Automator todavรญa describe el lanzamiento de la herramienta desde /herramientas/pero el obsoleto independiente Android Herramientas SDK El paquete ya no se ofrece a travรฉs del SDK Manager en la versiรณn actual. Android Studio versiones. Las instalaciones antiguas y los archivos SDK mรกs antiguos todavรญa contienen el lanzador; en una instalaciรณn nueva, el archivo generalmente no estรก presente, y Appium Inspector es la alternativa prรกctica. Los pasos originales descritos anteriormente se mantienen porque siguen siendo vรกlidos para cualquier mรกquina que aรบn conserve la carpeta de herramientas.

Cรณmo usar UIAutomatorViewer para encontrar objetos en tu aplicaciรณn

La secuencia de captura es siempre la misma: prepare el dispositivo, coloque la pantalla que le interesa frente a la cรกmara y, a continuaciรณn, tome la fotografรญa.

  1. Activar opciones de desarrollador en tu dispositivo. Leer AndroidGuรญa para configurar las opciones de desarrollador en el dispositivo para ver cรณmo habilitar las opciones de desarrollador en Android dispositivos.
  2. Conecte su Android conectar el dispositivo al PC mediante un cable USB.
  3. Seleccione la opciรณn "GuruAplicaciรณn "99" de la lista de aplicaciones, como se muestra a continuaciรณn.

Guru99 solicitudes seleccionadas de entre las Android lista de aplicaciones del dispositivo

  1. Haga clic en el botรณn Captura de pantalla del dispositivo botรณn para actualizar UIAutomatorViewer y cargar el Guru99 aplicaciones GUI en la herramienta. El botรณn se encuentra en la barra de herramientas resaltada a continuaciรณn.

Botรณn de la barra de herramientas de captura de pantalla del dispositivo utilizado para actualizar la captura de UIAutomatorViewer

  1. Una vez completada la actualizaciรณn, se mostrarรก una captura de pantalla de la GuruLa aplicaciรณn 99 se abre en el panel izquierdo.

capturado GuruSe cargรณ la pantalla de la aplicaciรณn 99 en el panel izquierdo de UIAutomatorViewer.

  1. Como ve en la imagen de arriba, en el lado derecho de la ventana hay 2 paneles.

El panel superior muestra la jerarquรญa de nodos: la forma en que se organizan y contienen los componentes de la interfaz de usuario. Al hacer clic en cada nodo, se muestran las propiedades de ese elemento de la interfaz de usuario en el panel inferior.

  1. Seleccione el botรณn "Cuestionario" en la imagen superior para ver sus diferentes propiedades (texto, ID de recurso...).

Botรณn de cuestionario seleccionado en el รกrbol de nodos con sus propiedades listadas en el panel de detalles inferior.

Cรณmo utilizar estas propiedades para identificar elementos para la automatizaciรณn

Bueno, no puedes usar las propiedades directamente; cada propiedad tiene otro nombre en la API de automatizaciรณn. Veamos cรณmo hacer funcionar esos valores de propiedad. Los siguientes atributos se pueden usar para identificar el botรณn 'Cuestionario' en el Guru99 aplicaciones.

Atributo en UIAutomatorViewer Nombre del localizador en el script Uso tรญpico
envรญenos mensaje de texto nombre Etiqueta visible en un botรณn o un campo estรกtico.
ID de recurso id La opciรณn mรกs estable cuando el desarrollador establece una
clase nombre de la clase Seleccionar un grupo de widgets del mismo tipo.
contenido-desc ID de accesibilidad Localizador multiplataforma que tambiรฉn ayuda a los lectores de pantalla.

Cada mapaping es visible directamente en el panel de detalles del nodo. envรญenos mensaje de texto El atributo se puede usar como "nombre", como muestra la fila de propiedades a continuaciรณn.

Fila de detalles del nodo que muestra el valor del atributo de texto utilizado como localizador de nombre.

El ID de recurso El atributo se puede utilizar como โ€œidโ€.

Fila de detalles del nodo que muestra el valor del atributo resource-id utilizado como localizador de ID.

El clase El atributo se puede utilizar como โ€œclassNameโ€.

Fila de detalles del nodo que muestra el valor del atributo de clase utilizado como localizador className.

El contenido-desc El atributo se puede utilizar como โ€œAccessibilityIdโ€.

Fila de detalles del nodo que muestra el valor del atributo content-desc utilizado como localizador del ID de accesibilidad.

Junto con los atributos anteriores, podemos escribir XPaths para la identificaciรณn de objetos. Esos nombres de atributos tambiรฉn son los que se pasan. capacidades deseadas y estrategias de localizaciรณn una vez que el script estรฉ en ejecuciรณn.

Cรณmo crear localizadores XPath a partir de atributos de UIAutomatorViewer

XPath es la alternativa cuando ningรบn atributo es รบnico por sรญ solo. El panel de detalles del nodo proporciona todos los valores que necesita la expresiรณn, por lo que XPath es simplemente el atributo que ya se ha leรญdo, escrito en forma de predicado.

Siga los pasos del panel en este orden:

  1. Seleccione el nodo en el panel superior y lea su clase, envรญenos mensaje de texto, ID de recurso y contenido-desc valores en el panel inferior.
  2. Prefiera un รบnico atributo estable. Si resource-id estรก completo, รบselo y listo; no se necesita XPath.
  3. Si ninguno es รบnico, combine dos atributos en un solo predicado.
  4. Si la etiqueta cambia en tiempo de ejecuciรณn, cambie la prueba de igualdad para una coincidencia parcial.

Los patrones que se muestran a continuaciรณn utilizan los nombres de los atributos exactamente como los informa UIAutomatorViewer.

<!-- match on the visible label -->
//*[@text='Quiz']

<!-- match on the resource-id reported by the viewer -->
//*[@resource-id='com.example.app:id/quiz_button']

<!-- match on the widget class -->
//android.widget.Button[@text='Quiz']

<!-- partial match when the label is dynamic -->
//*[contains(@text,'Qui')]

<!-- two attributes combined for a unique match -->
//*[@class='android.widget.Button' and @content-desc='Quiz']

Unas pocas reglas evitan que estas expresiones se vuelvan frรกgiles. Las rutas absolutas que recorren todo el รกrbol se rompen en el momento en que un desarrollador envuelve un diseรฑo en un contenedor mรกs, asรญ que comience cada expresiรณn con la doble barra y haga coincidir con un atributo en su lugar. Los predicados basados โ€‹โ€‹en รญndices se comportan de la misma manera: sobreviven hasta que la pantalla gana una fila. Y una expresiรณn que es รบnica en la pantalla de un telรฉfono puede coincidir con varios nodos en el diseรฑo de una tableta, asรญ que vuelva a inspeccionar la misma pantalla en ambos factores de forma antes de promover el localizador a un conjunto. La misma disciplina se aplica a XPath en Seleniumdonde el รกrbol es un DOM en lugar de una jerarquรญa de vistas.

Errores que se pueden encontrar al usar UIAutomatorViewer

La mayorรญa de los fallos se producen antes de que se dibuje un solo nodo, y casi todos tienen que ver con la conexiรณn entre la estaciรณn de trabajo y el telรฉfono mรณvil.

  • Veo el error: โ€œNo Android Los dispositivos fueron detectados por adb, como se muestra en la captura de pantalla a continuaciรณn. ยฟCรณmo puedo solucionar esto?

El cuadro de diรกlogo UIAutomatorViewer informa que no Android Los dispositivos fueron detectados por adb

La Soluciรณn: Asegรบrese de que su dispositivo estรฉ conectado al PC.

La tabla que aparece a continuaciรณn amplรญa esa respuesta a los demรกs mensajes con los que los evaluadores interactรบan con mayor frecuencia.

Sรญntoma Causa probable Soluciรณn
No Android Los dispositivos fueron detectados por adb Dispositivo no conectado, depuraciรณn USB desactivada o cable solo de carga. Vuelva a conectar con un cable de datos, habilite la depuraciรณn USB y, a continuaciรณn, confirme que el dispositivo aparece en la lista de dispositivos adb.
Dispositivo catalogado como no autorizado La solicitud de huella dactilar RSA nunca fue aceptada en el telรฉfono. Desbloquea la pantalla, vuelve a conectar y pulsa Permitir depuraciรณn USB.
Falta el archivo uiautomatorviewer.bat El paquete de herramientas SDK obsoleto no estรก instalado. Utilice una instalaciรณn de SDK existente que aรบn lo contenga, o cambie a Appium Inspector
La jerarquรญa estรก vacรญa o la captura falla. La pantalla cambiรณ durante el volcado de memoria o la aplicaciรณn bloquea la captura de pantalla. Mantรฉn la pantalla quieta y vuelve a tomar la captura de pantalla; las pantallas seguras no se pueden capturar.
El contenido de WebView se muestra como un รบnico nodo. El visor solo lee vistas nativas Inspeccione el contenido web con las herramientas para desarrolladores del navegador o con un inspector que admita el contexto web.

UIAutomatorViewer vs Appium Inspector vs. Inspector de maquetaciรณn

Se suelen utilizar tres inspectores contra Android pantallas, y resuelven problemas ligeramente diferentes.

Criterio UIAutomatorViewer Appium Inspector Android Studio Inspector de diseรฑo
Se envรญa con El legado Android paquete de herramientas SDK Una aplicaciรณn de escritorio independiente Android Studio
Plataformas inspeccionadas Android รบnico Android y iOS Android รบnico
Necesita un servidor en funcionamiento. No, se comunica directamente con adb. Sรญ, se conecta a un Appium sesiรณn del servidor No, se adjunta a un proceso depurable.
Genera cรณdigo de localizaciรณn No, los valores se copian manualmente. Sรญ, sugiere localizadores y puede registrar acciones. No, es una vista de depuraciรณn.
Mejores adecuados para Una bรบsqueda rรกpida de atributos en una configuraciรณn anterior. Creaciรณn y validaciรณn de localizadores para una suite Diagnรณstico de problemas de diseรฑo y renderizado

Para una suite que ya se ejecuta a travรฉs de AppiumEl Inspector es el sucesor natural: lee los mismos atributos, ejecuta el mismo controlador UiAutomator2 en segundo plano y tambiรฉn funciona con iOS. Appium Proyecto Inspector Se lanza activamente, por lo que es la opciรณn mรกs segura para trabajos nuevos, mientras que Layout Inspector sigue siendo รบtil cuando la pregunta es por quรฉ una vista se muestra de forma extraรฑa en lugar de cรณmo abordarlo. Si aรบn estรก eligiendo una pila, la comparaciรณn mรกs amplia en nuestra guรญa para herramientas de prueba de aplicaciones mรณviles es un buen siguiente paso, y Ejemplos de casos de prueba para dispositivos mรณviles mostrar a quรฉ se destinan finalmente estos localizadores.

Preguntas Frecuentes

Solo parcialmente. El visor lee la jerarquรญa de vistas nativa, por lo que un WebView suele aparecer como un nodo opaco. Inspeccione el HTML que contiene con las herramientas para desarrolladores del navegador o utilice un inspector que permita cambiar al contexto web.

No. La herramienta estรก vinculada a la Android Debug Bridge y el Android jerarquรญa de vistas. Para pantallas de iOS utilice Appium Inspector or XcodeEl inspector de accesibilidad de XCUITest, que en su lugar leรญa el รกrbol de elementos.

El comando escribe la misma jerarquรญa en un archivo XML en el dispositivo, sin grรกficos. Es รบtil en scripts y en mรกquinas sin interfaz grรกfica, pero se pierde la superposiciรณn de capturas de pantalla que facilita la bรบsqueda del nodo correcto.

Los motores de localizaciรณn basados โ€‹โ€‹en aprendizaje automรกtico evalรบan varios atributos en conjunto (texto, clase, posiciรณn y nodos vecinos) y vuelven a identificar el elemento cuando alguno de ellos cambia. Este comportamiento de autorreparaciรณn reduce los fallos causados โ€‹โ€‹por un ID renombrado.

Sรญ. Pega los valores de los atributos en un comentario y Copilot normalmente generarรก el campo del objeto de pรกgina y el mรฉtodo de clic correspondientes. Siempre verifica el localizador generado comparรกndolo con la pantalla en vivo, ya que la sugerencia es una suposiciรณn, no una bรบsqueda.

No. El visor funciona con la versiรณn instalada en el dispositivo, por lo que se puede inspeccionar un APK que no hayas compilado. Solo se mostrarรกn los atributos que el desarrollador haya configurado, como resource-id y content-desc.

Sรญ. Un emulador se comporta como un telรฉfono fรญsico en adb, por lo que el botรณn de captura de pantalla del dispositivo lo captura de la misma manera. Los emuladores son รบtiles para la programaciรณn inicial, aunque las pruebas finales deben realizarse en hardware real.

Asigna a cada control un identificador estable e independiente del idioma que funciona como identificador de accesibilidad en un script y como la etiqueta que anuncia un lector de pantalla. La fiabilidad de las pruebas y la accesibilidad mejoran con un solo cambio de una lรญnea.

Resumir este post con: