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
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.

Crear un error nuevo

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 y setKeyInjectionDelay, 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 a toString o hashCode en un UiObject2 inactivo. (I38ea1).
  • Se mejoró el rendimiento de UiWatcher mediante la omisión de llamadas innecesarias de waitForIdle. (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:
    • Se agregó By.displayId para seleccionar objetos por su ID de visualización (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).
  • 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 a setGestureMarginPercentage y setGestureMarginsPercentage 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 de Instrumentation 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 y By.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étodos By.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) 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 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 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 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 y clearText 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 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).