Test Uiautomator
Actualización más reciente | Versión estable | Versión potencial | Versión beta | Versión alfa |
---|---|---|---|---|
7 de mayo de 2025 | 2.3.0 | - | - | 2.4.0-alpha02 |
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-alpha02" }
Kotlin
dependencies { // Use to implement UIAutomator tests androidTestImplementation("androidx.test.uiautomator:uiautomator:2.4.0-alpha02") }
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.
Versión 2.4
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 iniciales de lint 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 visualización para restringir 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 teclas meta en
UiDevice#pressKeyCodes
. (I73f80). - Se actualizó
UiDevice#getWindowRoots
para que siempre muestre las raíces en orden Z (I87426). - Se solucionó un problema por el que ciertos gestos no se completaban (I60dd3, If4edd).
- Se corrigió un bucle infinito poco común 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 presionar teclas. (I3bcc5).
Correcciones de errores
- Se actualizó el retraso 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 debido a la inactividad del nodo de accesibilidad en ciertas IU invalidando periódicamente la caché de accesibilidad (I3be25).
- Se corrigieron los
StaleObjectException
que se producían cuando se llamaba atoString
ohashCode
en unUiObject2
inactivo. (I38ea1). - Se mejoró el rendimiento de
UiWatcher
omitiendo las llamadaswaitForIdle
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 en objetos en varias pantallas, y métodos
UiDevice
para administrar pantallas secundarias (Ie6544, I912cd). - Selectores nuevos:
- 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 debas ajustar las coordenadas y los desplazamientos que se usan en las pruebas.
- Se actualizó la inserció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 cambiaron los nombres de los métodos de margen basados en porcentajes de
UiObject2
asetGestureMarginPercentage
ysetGestureMarginsPercentage
para brindar coherencia (I24435).
Correcciones de errores
- Se mejoró el error que se generaba cuando no se encontraba una pantalla secundaria o no se podía acceder a ella (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 del orden de dibujo (índice z). (I5dfa4). - Se agregaron métodos
UiDevice
para obtener, configurar, 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 instanciaInstrumentation
inactiva si se volvía a crear (I18cae). - Se corrigió un posible NPE si no se podía determinar el ID de visualización cuando se volcaban nodos (Icafcb).
- Se agregó una advertencia cuando se realizan clics o se desplaza el contenido 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
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 en lugar de ocultarse (Ic48a1).
Correcciones de errores
- Se actualizó la inserción de
MotionEvent
para reducir la inestabilidad dando prioridad a la precisión del gesto sobre la velocidad (678ca3). - Se agregó el seguimiento a los métodos con muchos recursos para identificar cuellos de botella de 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 consulta o operación 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 funciones 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 para alcanzar la paridad conUiScrollable
(099d6e). - Se agregaron
UiDevice#setOrientationPortrait
ysetOrientationLandscape
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 corrigieron los métodos
UiScrollable
que, en ocasiones, usaban coordenadas no válidas en los SDKs del 18 al 22 (b53ece). - Se corrigió el error que generaba que
UiObject2#setText
yclearText
no modificaran el texto en los SDKs 18 y 19 (77e41d). - Se corrigió que los
UiWatcher
no se ejecutaran en el orden correcto (c85f92). - Se corrigió un problema por el que la rotación del dispositivo podría no estar completa 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).