Test Uiautomator

  
Framework para pruebas de IU funcionales entre apps
Actualización más reciente Versión estable Versión potencial Versión beta Versión alfa
1 de julio de 2026 2.4.0 - - -

Cómo declarar dependencias

Para agregar una dependencia en test, debes agregar el repositorio de Maven de Google a tu proyecto. Lee sobre el repositorio de Maven de Google para obtener más información.

Agrega las dependencias de los artefactos que necesites en el archivo build.gradle de tu app o módulo:

Groovy

dependencies {
    // Use to implement UIAutomator tests
    androidTestImplementation "androidx.test.uiautomator:uiautomator:2.4.0"
}

Kotlin

dependencies {
    // Use to implement UIAutomator tests
    androidTestImplementation("androidx.test.uiautomator:uiautomator:2.4.0")
}

Para obtener más información sobre las dependencias, consulta Cómo agregar dependencias de compilación.

Comentarios

Tus comentarios ayudan a mejorar Jetpack. Avísanos si descubres nuevos errores o tienes ideas para mejorar esta biblioteca. Consulta los errores existentes de esta biblioteca antes de crear uno nuevo. Puedes agregar tu voto a un error existente haciendo clic en el botón de la estrella.

Crear un error nuevo

Consulta la documentación sobre la herramienta Issue Tracker para obtener más información.

Versión 2.4

Versión 2.4.0

1 de julio de 2026

Lanzamiento de androidx.test.uiautomator:uiautomator:2.4.0, androidx.test.uiautomator:uiautomator-shell:2.4.0 y androidx.test.uiautomator:uiautomator-shell-android:2.4.0. La versión 2.4.0 contiene estas confirmaciones.

Cambios importantes desde la versión 2.3.0:

Se revisó la superficie de la API de UiAutomator para proporcionar lo siguiente:

  • Un alcance de prueba uiAutomator dedicado para un código de prueba más limpio y expresivo
  • Métodos como onElement, onElements y onElementOrNull para encontrar elementos de la IU con predicados claros
  • Mecanismo de espera integrado para elementos condicionales onElement*(timeoutMs: Long = 10000)
  • Administración explícita del estado de la app, como waitForStable y waitForAppToBeVisible
  • Interacción directa con los nodos de la ventana de accesibilidad para situaciones de prueba de multiventana
  • Funciones integradas de captura de pantalla y un ResultsReporter para pruebas visuales y depuración

Para comenzar a usar las nuevas APIs, consulta la guía de UiAutomator 2.4+.

Versión 2.4.0-rc01

17 de junio de 2026

Lanzamiento de androidx.test.uiautomator:uiautomator:2.4.0-rc01, androidx.test.uiautomator:uiautomator-shell:2.4.0-rc01 y androidx.test.uiautomator:uiautomator-shell-android:2.4.0-rc01. La versión 2.4.0-rc01 contiene estas confirmaciones.

Versión 2.4.0-beta02

11 de marzo de 2026

Lanzamiento de androidx.test.uiautomator:uiautomator:2.4.0-beta02 y androidx.test.uiautomator:uiautomator-shell:2.4.0-beta02. La versión 2.4.0-beta02 contiene estas confirmaciones.

Correcciones de errores

  • Se corrigió UiObject2#scrollToElementOrNull que arrojaba en lugar de mostrar null y se actualizó su tipo de retorno (If0109, b/479892735).

Versión 2.4.0-beta01

11 de febrero de 2026

Lanzamiento de androidx.test.uiautomator:uiautomator:2.4.0-beta01 y androidx.test.uiautomator:uiautomator-shell:2.4.0-beta01. La versión 2.4.0-beta01 contiene estas confirmaciones.

Cambios en la API

Versión 2.4.0-alpha07

3 de diciembre de 2025

Lanzamiento de androidx.test.uiautomator:uiautomator:2.4.0-alpha07. La versión 2.4.0-alpha07 contiene estas confirmaciones.

Cambios en la API

  • Se cambió la espera de startActivity para esperar una ventana nueva. Esto hace que el lanzamiento sea generalmente síncrono y permite que las versiones futuras de Macrobenchmark configuren la detección de finalización del lanzamiento. (I35da6, Id6e6f, b/440021797)
  • Se quitó la API sin nombre de paquete explícito en UiAutomatorTestScope. (I8c285, b/413417205)

Versión 2.4.0-alpha06

13 de agosto de 2025

Lanzamiento de androidx.test.uiautomator:uiautomator:2.4.0-alpha06. La versión 2.4.0-alpha06 contiene estas confirmaciones.

Nuevas funciones

  • Se agregaron APIs basadas en ventanas para mejorar las pruebas de multiventana, es decir, ahora se puede usar UiDevice#findWindow para encontrar un UiWindow específico según un ByWindowSelector compilado con métodos de fábrica By.Window. (I359c4, I40528, I8c963)

Versión 2.4.0-alpha05

18 de junio de 2025

Lanzamiento de androidx.test.uiautomator:uiautomator:2.4.0-alpha05. La versión 2.4.0-alpha05 contiene estas confirmaciones.

Cambios en la API

  • Se agregó UiObject2#waitForStable como acceso directo para UiObject2#accessibilityNodeInfo#waitForStable().

Versión 2.4.0-alpha04

7 de junio de 2023

Lanzamiento de androidx.test.uiautomator:uiautomator:2.4.0-alpha04. La versión 2.4.0-alpha04 contiene estas confirmaciones.

Cambios en la API

  • Se cambió el nombre de onView a onElement para aclarar que funciona con Compose (I53a3b, b/419006806).

Correcciones de errores

Versión 2.4.0-alpha03

20 de mayo de 2025

Lanzamiento de androidx.test.uiautomator:uiautomator:2.4.0-alpha03. La versión 2.4.0-alpha03 contiene estas confirmaciones.

Correcciones de errores

  • Se corrigió waitForStableInActiveWindow que arrojaba NPE en algunos casos (Ibf50f, b/417046391).

Versión 2.4.0-alpha02

7 de mayo de 2025

Lanzamiento de androidx.test.uiautomator:uiautomator:2.4.0-alpha02. La versión 2.4.0-alpha02 contiene estas confirmaciones.

Nuevas funciones

  • Forma inicial de la nueva API de Uiautomator. Se puede crear UiAutomatorTestScope a través de la fábrica uiAutomator que da acceso a las nuevas APIs de onView.
  • Reglas de lint iniciales para advertir sobre el uso de AccessibilityNodeInfo#getText y sugerir el uso de textAsString.

Cambios en la API

  • Se agregó Configurator#setDefaultDisplayId para establecer un ID de pantalla para restringir todas las búsquedas a (Icdf17).
  • Se cambió Searchable (interfaz compartida por UiDevice y UiObject2) a pública para mayor comodidad (I67f18).

Correcciones de errores

  • Se corrigió el control de las teclas meta en UiDevice#pressKeyCodes. (I73f80).
  • Se actualizó UiDevice#getWindowRoots para que siempre muestre las raíces en orden Z (I87426).
  • Se corrigió un problema por el que ciertos gestos estaban incompletos (I60dd3, If4edd).
  • Se corrigió un bucle infinito poco frecuente cuando se llamaba a UiDevice#scrollUntil (I39989).

Versión 2.4.0-alpha01

26 de junio de 2024

Lanzamiento de androidx.test.uiautomator:uiautomator:2.4.0-alpha01. La versión 2.4.0-alpha01 contiene estas confirmaciones.

Cambios en la API

  • Se dieron de baja Configurator#getKeyInjectionDelay y setKeyInjectionDelay, ya que el parámetro ya no se usa ahora que el texto siempre se inserta directamente en lugar de presionar teclas. (I3bcc5).

Correcciones de errores

  • Se actualizó la demora entre los eventos de movimiento UiObject2 para tener en cuenta las frecuencias de actualización dinámicas (es decir, la pantalla fluida) (I43f12).
  • Se redujo la inestabilidad de la obsolescencia del nodo de accesibilidad en ciertas IUs invalidando periódicamente la caché de accesibilidad (I3be25).
  • Se corrigieron las StaleObjectException que se producían cuando se llamaba a toString o hashCode en un UiObject2 obsoleto. (I38ea1).
  • Se mejoró el rendimiento de UiWatcher omitiendo llamadas waitForIdle innecesarias. (I8c65e).
  • Se corrigieron las imprecisiones de Javadoc, en especial para aclarar cuándo se usa cada parámetro Configurator. (Ie10b1, I71631).

Versión 2.3.0

Versión 2.3.0

21 de febrero de 2024

Lanzamiento de androidx.test.uiautomator:uiautomator:2.3.0. La versión 2.3.0 contiene estas confirmaciones.

Cambios importantes desde la versión 2.2.0

  • Compatibilidad con varias pantallas: Se agregó compatibilidad para encontrar y operar objetos en varias pantallas, y UiDevice métodos para administrar pantallas secundarias (Ie6544, I912cd).
  • Nuevos selectores:
    • Se agregó By.displayId para seleccionar objetos por su ID de pantalla (I1825b).
    • Se agregaron By.hasParent y By.hasAncestor para seleccionar objetos según sus elementos superiores (I93c36).
    • Se agregaron métodos By.hint para seleccionar objetos por su texto de sugerencia (Idd345).
  • Condiciones personalizadas: Se expuso una interfaz Condition para admitir condiciones de espera personalizadas y se agregaron los métodos UiDevice#wait, UiObject2#wait y UiObject2#scrollUntil correspondientes (27c0ea, 099d6e).
  • Correcciones de errores y confiabilidad
    • Se solucionó un problema por el que, en ocasiones, los cálculos del tamaño de la pantalla eran incorrectos y podían ignorar partes de la pantalla (Ifc016). Es posible que debas ajustar las coordenadas y los desplazamientos que se usan en las pruebas.
    • Se actualizó la inyección de MotionEvent para mejorar la precisión (678ca3) y emular mejor los gestos del usuario (454450).
    • Se mejoró la confiabilidad de los desplazamientos (I7b059), las rotaciones (c6cea0), los clics largos (49572b), los pellizcos (3c619a) y mucho más.

Versión 2.3.0-rc01

7 de febrero de 2024

Se lanzó androidx.test.uiautomator:uiautomator:2.3.0-rc01 sin cambios. La versión 2.3.0-rc01 contiene estas confirmaciones.

Versión 2.3.0-beta01

13 de diciembre de 2023

Lanzamiento de androidx.test.uiautomator:uiautomator:2.3.0-beta01. La versión 2.3.0-beta01 contiene estas confirmaciones.

Cambios en la API

  • Se cambió el nombre de los métodos de margen basados en porcentaje a setGestureMarginPercentage y setGestureMarginsPercentage para brindar coherencia (I24435).UiObject2

Correcciones de errores

  • Se mejoró el error que se arrojaba cuando no se encontraba o no se podía acceder a una pantalla secundaria (116b23).

Versión 2.3.0-alpha05

1 de noviembre de 2023

Lanzamiento de androidx.test.uiautomator:uiautomator:2.3.0-alpha05. La versión 2.3.0-alpha05 contiene estas confirmaciones.

Cambios en la API

  • Se agregó UiObject2#getDrawingOrder para exponer información sobre el orden de dibujo (índice z). (I5dfa4).
  • Se agregaron métodos UiDevice para obtener, establecer, congelar y descongelar la rotación de pantallas secundarias. (I912cd).

Correcciones de errores

  • Se agregó un reintento a UiObject2#scrollUntil cuando no se pudo detectar el final del desplazamiento (Ibac6f).
  • Se solucionó un problema por el que UiDevice usaba una instancia Instrumentation obsoleta si se volvía a crear (I18cae).
  • Se corrigió una posible NPE si no se puede determinar el ID de la pantalla cuando se vuelcan los nodos (Icafcb).
  • Se agregó una advertencia cuando se realizan clics o desplazamientos en objetos que no se pueden hacer clic ni desplazar (I4a5d9).
  • Se redujo la velocidad de desplazamiento predeterminada de UiObject2 para mejorar la confiabilidad (I5e071).

Versión 2.3.0-alpha04

26 de julio de 2023

Lanzamiento de androidx.test.uiautomator:uiautomator:2.3.0-alpha04. La versión 2.3.0-alpha04 contiene estas confirmaciones.

Cambios en la API

  • Se agregaron By.hasParent y By.hasAncestor para admitir la búsqueda de objetos según sus elementos superiores (I93c36).
  • Se agregó UiObject2#getHint para recuperar el texto de sugerencia de un objeto y los métodos By.hint para seleccionar objetos según su texto de sugerencia (Idd345).
  • Se agregó By.displayId para admitir la selección de objetos según la pantalla en la que se encuentran (I1825b).
  • Se agregaron los métodos UiDevice#getDisplayHeight(int) y UiDevice#getDisplayWidth(int) para encontrar las dimensiones de una pantalla por su ID (Ie6544).
  • Se volvieron a agregar los métodos wait(SearchCondition, long) y wait(UiObject2Condition, long) para brindar retrocompatibilidad (Iebfda).
  • Se cambió UiDevice#executeShellCommand a público, pero se desaconsejó en lugar de ocultarse (Ic48a1).

Correcciones de errores

  • Se actualizó la inyección de MotionEvent para reducir la inestabilidad priorizando la precisión de los gestos por sobre la velocidad (678ca3).
  • Se agregó el seguimiento a los métodos con muchos recursos para identificar cuellos de botella en el rendimiento (d17de3).
  • Se agregó un mecanismo de reintento cuando se inicia una conexión de UiAutomation (048caf).
  • Se corrigió una posible NPE de nodos nulos en UiDevice#dumpWindowHierarchy (b725eb).
  • Se corrigieron errores inesperados de consultas o operaciones en pantallas privadas (985db6, 7053d4).

Versión 2.3.0-alpha03

19 de abril de 2023

Lanzamiento de androidx.test.uiautomator:uiautomator:2.3.0-alpha03. La versión 2.3.0-alpha03 contiene estas confirmaciones.

Cambios en la API

  • Se expuso una interfaz Condition para permitir condiciones de espera personalizadas en lugar de depender únicamente de las integradas en Until y se actualizaron los métodos UiDevice#wait y UiObject2#wait para aceptar esta interfaz (27c0ea).
  • Se agregó UiObject2#scrollUntil para admitir el desplazamiento hasta que se cumpla una condición y alcanzar la paridad con UiScrollable (099d6e).
  • Se agregaron UiDevice#setOrientationPortrait y setOrientationLandscape para facilitar las rotaciones en los tipos de dispositivos (e13cb7).
  • Se agregó UiObject2#setGestureMarginPercent para admitir la configuración de márgenes en relación con el tamaño del objeto. (Ib8c77)

Correcciones de errores

  • Se corrigió el problema por el que los métodos UiScrollable a veces usaban coordenadas no válidas en los SDKs 18 a 22 (b53ece).
  • Se corrigió el problema por el que UiObject2#setText y clearText no podían modificar el texto en los SDKs 18 y 19 (77e41d).
  • Se corrigió el problema por el que los UiWatcher no se ejecutaban en el orden correcto (c85f92).
  • Se corrigió un problema por el que la rotación del dispositivo aún no se completaba después de un cambio de orientación de UiDevice (c6cea0).
  • Se mejoró la confiabilidad de los clics largos, los arrastres y los pellizcos (49572b, 3c619a).

Versión 2.3.0-alpha02

11 de enero de 2023

Lanzamiento de androidx.test.uiautomator:uiautomator:2.3.0-alpha02. La versión 2.3.0-alpha02 contiene estas confirmaciones.

Cambios en la API

  • Se modificaron los registros de toda la biblioteca para proporcionar más información, advertir sobre posibles problemas y mejorar la coherencia.
  • Se agregó UiDevice#pressKeyCodes para admitir la presión de varias teclas simultáneamente; p. ej., presionar POWER y VOLUME_DOWN para tomar una captura de pantalla (22e525).
  • Se agregó UiDevice#setCompressedLayoutHierarchy y UiDevice#setCompressedLayoutHeirarchy dejó de estar disponible para corregir un error ortográfico en el nombre del método (4e2f65).
  • Se marcó UiAutomatorInstrumentationTestRunner como obsoleto, ya que controla objetos UiAutomatorTestCase obsoletos y ya no es necesario (be6c85).
  • Se actualizó la demora entre objetos UiObject2 MotionEvent y el doble de la frecuencia de actualización de pantalla para emular mejor los gestos del usuario (454450).
  • Se agregó compatibilidad con la coincidencia de descripciones y texto de varias líneas (1625e6, b/255787130).

Correcciones de errores

  • Se corrigieron los objetos StaleObjectException que a veces se arrojaban mientras se consultaban o se esperaban objetos (4cbcc0).
  • Se corrigieron los valores de retorno de UiScrollable#scrollToBeginning, scrollToEnd, flingToBeginning y flingToEnd, que no indicaban si se alcanzó el principio o el final (d33e06).
  • Se corrigieron los métodos UiScrollable#scrollForward y scrollBackward ignorando el tiempo de espera configurado (29e4f3).
  • Se corrigió el constructor de copias BySelector que no controlaba los selectores de profundidad (6c7b91).
  • Se corrigió el manejo de valores porcentuales no válidos en UiObject#pinchIn y pinchOut (01b973).
  • Se solucionó un problema poco frecuente por el que se perdía la compatibilidad con el modo multiventana si se restablecía la conexión de UiAutomation subyacente (1bb956).

Versión 2.3.0-alpha01

7 de septiembre de 2022

Lanzamiento de androidx.test.uiautomator:uiautomator:2.3.0-alpha01. La versión 2.3.0-alpha01 contiene estas confirmaciones.

Cambios en la API

  • Se anotó la nulidad de todos los métodos públicos.
  • Se cambió la inyección de MotionEvent a asíncrona con un breve retraso para gestos de UiObject2 más suaves.
  • Se redujo el intervalo de sondeo mientras se espera de 1,000 ms a 100 ms.
  • Se actualizaron UiDevice#wakeUp y UiDevice#sleep para usar KEYCODE_WAKEUP y KEYCODE_SLEEP a fin de admitir dispositivos que anulan el botón de encendido.
  • Se agregó UiObject2#getDisplayId y compatibilidad para encontrar y administrar objetos en varias pantallas.
  • Se agregaron los métodos UiObject#click y UiObject2#clickAndWait para hacer clic en un punto con sus coordenadas.

Correcciones de errores

  • Se solucionó un problema por el que, en ocasiones, los cálculos del tamaño de la pantalla eran incorrectos y podían ignorar partes de la pantalla, especialmente en el modo multiventana (Ifc016c).
  • Se corrigió el escalamiento de capturas de pantalla en UiDevice#takeScreenshot (Id80ad6).
  • Se mejoró la confiabilidad de Until.scrollFinished y UiObject2#scroll (I7b0595).
  • Se corrigieron las advertencias de IncorrectContextUseViolation del modo estricto (Iffa6a0).