Test Uiautomator
Actualización más reciente | Versión estable | Versión potencial | Versión beta | Versión alfa |
---|---|---|---|---|
13 de agosto de 2025 | 2.3.0 | - | - | 2.4.0-alpha06 |
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-alpha06" }
Kotlin
dependencies { // Use to implement UIAutomator tests androidTestImplementation("androidx.test.uiautomator:uiautomator:2.4.0-alpha06") }
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.
Consulta la documentación sobre la Herramienta de seguimiento de errores para obtener más información.
Test Uiautomator Shell versión 1.0
Versión 1.0.0-alpha02
13 de agosto de 2025
Lanzamiento de androidx.test.uiautomator:uiautomator-shell:1.0.0-alpha02
. La versión 1.0.0-alpha02 contiene estas confirmaciones.
Versión 1.0.0-alpha01
18 de junio de 2025
Lanzamiento de androidx.test.uiautomator:uiautomator-shell:1.0.0-alpha01
. La versión 1.0.0-alpha01 contiene estas confirmaciones.
Nuevas funciones
- Primera versión alfa de la biblioteca de shell de ui-automator para ejecutar comandos de shell como usuario de shell. Esta biblioteca permite leer stdout, stderr y escribir en stdin de un proceso sh iniciado por shell. De facto, realiza un backport de
UiAutomation#executeShellCommandRwe
introducido en la API 34.
Versión 2.4
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 varias ventanas, es decir, ahora se puede usar
UiDevice#findWindow
para encontrar unUiWindow
específico según unByWindowSelector
compilado con métodos de fábricaBy.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 paraUiObject2#accessibilityNodeInfo#waitForStable()
Versión 2.4.0-alpha04
4 de junio de 2025
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
aonElement
para aclarar que funciona con Compose (I53a3b, b/419006806).
Correcciones de errores
- Se corrigió
waitForStableInActiveWindow
(290457f1, b/420349130).
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ó un error por el que
waitForStableInActiveWindow
lanzaba una 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
.UiAutomatorTestScope
se puede crear a través de la fábricauiAutomator
que brinda acceso a las nuevas APIs deonView
. - Se agregaron reglas de Lint iniciales para advertir sobre el uso de
AccessibilityNodeInfo#getText
y sugerir el uso detextAsString
.
Cambios en la API
- Se agregó
Configurator#setDefaultDisplayId
para establecer un ID de pantalla que restrinja todas las búsquedas (Icdf17). - Se cambió
Searchable
(interfaz compartida porUiDevice
yUiObject2
) 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 devuelva raíces en orden Z (I87426). - Se solucionó un problema por el que ciertos gestos estaban incompletos (I60dd3, If4edd).
- Se corrigió un bucle infinito poco común que se producía 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
ysetKeyInjectionDelay
, ya que el parámetro no se usa ahora que el texto siempre se inyecta directamente en lugar de con pulsaciones de teclas. (I3bcc5).
Correcciones de errores
- Se actualizó la demora entre los eventos de movimiento de
UiObject2
para tener en cuenta las frecuencias de actualización dinámicas (es decir, Smooth Display) (I43f12). - Se redujo la inestabilidad debido a la obsolescencia de los nodos de accesibilidad en ciertas IU invalidando periódicamente la caché de accesibilidad (I3be25).
- Se corrigieron los
StaleObjectException
que ocurrían cuando se llamaba atoString
ohashCode
en unUiObject2
obsoleto. (I38ea1). - Se mejoró el rendimiento de
UiWatcher
omitiendo llamadas innecesarias awaitForIdle
. (I8c65e). - Se corrigieron imprecisiones en Javadoc, especialmente 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 pantallas múltiples: Se agregó compatibilidad para encontrar y operar objetos en varias pantallas, y métodos
UiDevice
para administrar pantallas secundarias (Ie6544, I912cd). - Nuevos selectores:
- Condiciones personalizadas: Se expuso una interfaz
Condition
para admitir condiciones de espera personalizadas y se agregaron los métodosUiDevice#wait
,UiObject2#wait
yUiObject2#scrollUntil
correspondientes (27c0ea, 099d6e). - Corrección 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 deban ajustarse 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
UiObject2
asetGestureMarginPercentage
ysetGestureMarginsPercentage
para brindar coherencia (I24435).
Correcciones de errores
- Se mejoró el error que se arroja cuando no se encuentra o no se puede 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 la información del orden de dibujo (índice Z). (I5dfa4). - Se agregaron métodos
UiDevice
para obtener, establecer, inmovilizar y desinmovilizar 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ó el problema por el que
UiDevice
usaba una instancia obsoleta deInstrumentation
si se volvía a crear (I18cae). - Se corrigió un posible NPE si no se puede determinar el ID de pantalla cuando se vuelcan nodos (Icafcb).
- Se agregó una advertencia cuando se realizan clics o desplazamientos en objetos en los que no se puede hacer clic o desplazarse (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
yBy.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étodosBy.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)
yUiDevice#getDisplayWidth(int)
para encontrar las dimensiones de una pantalla por su ID (Ie6544). - Se volvieron a agregar los métodos
wait(SearchCondition, long)
ywait(UiObject2Condition, long)
para brindar retrocompatibilidad (Iebfda). - Se cambió
UiDevice#executeShellCommand
a público, pero se desaconseja su uso en lugar de ocultarlo (Ic48a1).
Correcciones de errores
- Se actualizó la inyección de
MotionEvent
para reducir la inestabilidad. Para ello, se prioriza la precisión de los gestos por sobre la velocidad (678ca3). - Se agregó el seguimiento a los métodos que consumen 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 que se producían al consultar pantallas privadas o realizar operaciones en ellas (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 enUntil
, y se actualizaron los métodosUiDevice#wait
yUiObject2#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 conUiScrollable
(099d6e). - Se agregaron
UiDevice#setOrientationPortrait
ysetOrientationLandscape
para facilitar las rotaciones en todos los tipos de dispositivos (e13cb7). - Se agregó
UiObject2#setGestureMarginPercent
para admitir el establecimiento de márgenes relativos al 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 del 18 al 22 (b53ece). - Se corrigió el error de
UiObject2#setText
yclearText
que impedía 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 podría no completarse 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
yUiDevice#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 objetosUiAutomatorTestCase
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
yflingToEnd
, que no indicaban si se alcanzó el principio o el final (d33e06). - Se corrigieron los métodos
UiScrollable#scrollForward
yscrollBackward
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
ypinchOut
(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 deUiObject2
más suaves. - Se redujo el intervalo de sondeo mientras se espera de 1,000 ms a 100 ms.
- Se actualizaron
UiDevice#wakeUp
yUiDevice#sleep
para usarKEYCODE_WAKEUP
yKEYCODE_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
yUiObject2#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
yUiObject2#scroll
(I7b0595). - Se corrigieron las advertencias de
IncorrectContextUseViolation
del modo estricto (Iffa6a0).