Test Uiautomator
Actualización más reciente | Versión estable | Versión potencial | Versión beta | Versión alfa |
---|---|---|---|---|
26 de junio de 2024 | 2.3.0 | - | - | 2.4.0-alpha01 |
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-alpha01" }
Kotlin
dependencies { // Use to implement UIAutomator tests androidTestImplementation("androidx.test.uiautomator:uiautomator:2.4.0-alpha01") }
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-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 inserta directamente en lugar de hacerlo a través de pulsaciones de teclas. (I3bcc5).
Correcciones de errores
- Se actualizó el retraso entre los eventos de movimiento de
UiObject2
para que se tengan en cuenta las frecuencias de actualización dinámicas (es decir, Smooth Display) (I43f12). - Se redujo la fragilidad debido a la obsolescencia del nodo de accesibilidad en ciertas IU mediante la invalidación periódica de 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
mediante la omisión de llamadas innecesarias dewaitForIdle
. (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 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 se deban 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 basado en porcentajes de
UiObject2
asetGestureMarginPercentage
ysetGestureMarginsPercentage
para mantener la 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, configurar, inmovilizar y desbloquear la rotación de pantallas secundarias. (I912cd).
Correcciones de errores
- Se agregó un reintento a
UiObject2#scrollUntil
cuando no se podía detectar el final del desplazamiento (Ibac6f). - Se corrigió el problema por el que
UiDevice
usaba una instancia inactiva deInstrumentation
si se recreaba (I18cae). - Se corrigió el posible NPE si no se puede determinar el ID de visualización cuando se vuelcan los nodos (Icafcb).
- Se agregó una advertencia cuando se hacen clics o desplazamientos en objetos desplazables o en los que no se puede hacer clic (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 de acuerdo con 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 de acuerdo con su texto de sugerencia. (Idd345) - Se agregó
By.displayId
para admitir la selección de objetos según la pantalla en la que se encuentren (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 la retrocompatibilidad (Iebfda). - Se cambió
UiDevice#executeShellCommand
a público, pero no se recomienda en lugar de oculto (Ic48a1).
Correcciones de errores
- Se actualizó la inyección de
MotionEvent
para reducir la fragilidad mediante la priorización de la precisión de los gestos sobre la velocidad (678ca3). - Se agregó seguimiento a los métodos con un gran volumen de 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ó un posible NPE de nodos nulos en
UiDevice#dumpWindowHierarchy
(b725eb). - Se corrigieron errores inesperados que se producían cuando se consultaban o se operaban 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 solo de los elementos integrados 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 entre tipos de dispositivos (e13cb7). - Se agregó
UiObject2#setGestureMarginPercent
para admitir la configuración de márgenes relacionados con el tamaño del objeto. (Ib8c77).
Correcciones de errores
- Se corrigieron los métodos
UiScrollable
que usaban coordenadas no válidas en los SDK 18 a 22 (b53ece). - Se corrigió el error por el que
UiObject2#setText
yclearText
no modificaban el texto en los SDK 18 y 19 (77e41d). - Se corrigieron los objetos
UiWatcher
que no se ejecutaban en el orden correcto (c85f92). - Se solucionó 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, arrastres y 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).