UI Automator

UI Automator es un marco de prueba de la IU adecuado para pruebas de IU funcionales entre aplicaciones en todo el sistema y en apps instaladas.

El marco de trabajo de pruebas de UI Automator proporciona un conjunto de API para compilar pruebas de IU que realizan interacciones en las apps del usuario y las app del sistema. Las API de UI Automator te permiten realizar operaciones como abrir el menú Configuración o el lanzador de apps en un dispositivo de prueba. El marco de trabajo de prueba de UI Automator es adecuado para escribir pruebas automatizadas de estilo "caja negra", donde el código de prueba no se basa en detalles de implementación internos de la app de destino.

Estas son algunas de las características clave del marco de trabajo de prueba de UI Automator:

  • Un visor para inspeccionar la jerarquía de diseño. Para obtener más información, consulta UI Automator Viewer.
  • Una API para obtener información de estado y realizar operaciones en el dispositivo destino. Para obtener más información, consulta Cómo acceder al estado del dispositivo.
  • API compatibles con pruebas de IU en varias apps. Para obtener más información, consulta API de UI Automator.

UI Automator Viewer

La herramienta uiautomatorviewer proporciona una GUI conveniente para escanear y analizar los componentes de la IU que actualmente se muestran en un dispositivo Android. Puedes usar esta herramienta para inspeccionar la jerarquía de diseño y ver las propiedades de los componentes de la IU visibles en primer plano en el dispositivo. Esta información te permite crear pruebas más específicas usando UI Automator; por ejemplo, mediante la creación de un selector de IU que coincida con una propiedad visible específica.

La herramienta uiautomatorviewer se encuentra en el directorio <android-sdk>/tools/bin.

Cómo acceder al estado del dispositivo

El marco de trabajo de prueba de UI Automator proporciona una clase UiDevice para acceder al dispositivo en el cual se ejecuta una app de destino y realizar operaciones en él. Puedes llamar a los métodos correspondientes para acceder a las propiedades del dispositivo, como la orientación o el tamaño de pantalla actuales. La clase UiDevice también te permite realizar acciones como:

  • Cambiar la rotación del dispositivo.
  • Presionar una tecla de hardware, como "subir volumen".
  • Presionar los botones Atrás, Página principal o Menú.
  • Abrir el panel de notificaciones.
  • Tomar una captura de pantalla de la ventana actual.

Por ejemplo, para simular la presión de un botón de pantalla principal, llama al método UiDevice.pressHome().

API de UI Automator

Las API de UI Automator te permiten escribir pruebas eficaces sin necesidad de conocer detalles sobre la implementación de la app a la que apuntas. Puedes usar estas API para capturar y manipular los componentes de la IU en varias apps:

  • UiCollection: Enumera los elementos de la IU de un contenedor para el conteo o la orientación de subelementos a través del texto visible o la propiedad de descripción de contenido.
  • UiObject: Representa un elemento de la IU que es visible en el dispositivo.
  • UiScrollable: Proporciona compatibilidad con la búsqueda de elementos en un contenedor de IU desplazable.
  • UiSelector: Representa una consulta para uno o más elementos de la IU de destino en un dispositivo.
  • Configurator: Te permite establecer parámetros claves para ejecutar pruebas de UI Automator.

Por ejemplo, en el siguiente código, se muestra cómo escribir una secuencia de comandos de prueba que activa el lanzador de apps predeterminado en el dispositivo:

Kotlin

    device = UiDevice.getInstance(getInstrumentation())
    device.pressHome()

    // Bring up the default launcher by searching for a UI component
    // that matches the content description for the launcher button.
    val allAppsButton: UIObject = device.findObject(
            UiSelector().description("Apps"))

    // Perform a click on the button to load the launcher.
    allAppsButton.clickAndWaitForNewWindow()
    

Java

    device = UiDevice.getInstance(getInstrumentation());
    device.pressHome();

    // Bring up the default launcher by searching for a UI component
    // that matches the content description for the launcher button.
    UiObject allAppsButton = device
            .findObject(new UiSelector().description("Apps"));

    // Perform a click on the button to load the launcher.
    allAppsButton.clickAndWaitForNewWindow();
    

Para obtener más información sobre el uso de UI Automator, consulta la guía de referencia de API y de IU de prueba para varias apps.

Recursos adicionales

Para obtener más información sobre el uso de UI Automator en las pruebas de Android, consulta los siguientes recursos.

Ejemplos