Test Uiautomator

  
Framework pour les tests fonctionnels de l'interface utilisateur entre applications.
Dernière mise à jour Version stable Version finale Version bêta Version alpha
13 août 2025 2.3.0 - - 2.4.0-alpha06

Déclarer des dépendances

Pour ajouter une dépendance sur Test, vous devez ajouter le dépôt Maven de Google à votre projet. Pour en savoir plus, consultez la section Dépôt Maven de Google.

Ajoutez les dépendances correspondant aux artefacts dont vous avez besoin dans le fichier build.gradle de votre application ou de votre module :

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")
}

Pour en savoir plus sur les dépendances, consultez Ajouter des dépendances de compilation.

Commentaires

Vos commentaires nous aident à améliorer Jetpack. N'hésitez pas à nous contacter si vous découvrez de nouveaux problèmes ou si vous avez des idées pour améliorer cette bibliothèque. Veuillez consulter les problèmes existants de cette bibliothèque avant d'en signaler un nouveau. Vous pouvez ajouter votre vote à un problème existant en cliquant sur le bouton en forme d'étoile.

Signaler un nouveau problème

Pour en savoir plus, consultez la documentation sur l'outil Issue Tracker.

Test Uiautomator Shell version 1.0

Version 1.0.0-alpha02

13 août 2025

Publication d'androidx.test.uiautomator:uiautomator-shell:1.0.0-alpha02. La version 1.0.0-alpha02 contient ces commits.

Version 1.0.0-alpha01

18 juin 2025

Publication d'androidx.test.uiautomator:uiautomator-shell:1.0.0-alpha01. La version 1.0.0-alpha01 contient ces commits.

Nouvelles fonctionnalités

  • Première version alpha de la bibliothèque shell ui-automator pour exécuter des commandes shell en tant qu'utilisateur shell. Cette bibliothèque permet de lire stdout et stderr, et d'écrire dans stdin d'un processus sh lancé par shell. De facto, il rétroporte UiAutomation#executeShellCommandRwe introduit dans l'API 34.

Version 2.4

Version 2.4.0-alpha06

13 août 2025

Publication d'androidx.test.uiautomator:uiautomator:2.4.0-alpha06. La version 2.4.0-alpha06 contient ces commits.

Nouvelles fonctionnalités

  • Ajout d'API basées sur les fenêtres pour améliorer les tests multifenêtres. Par exemple, UiDevice#findWindow peut désormais être utilisé pour trouver un UiWindow spécifique en fonction d'un ByWindowSelector créé avec les méthodes de fabrique By.Window. (I359c4, I40528, I8c963)

Version 2.4.0-alpha05

18 juin 2025

Publication d'androidx.test.uiautomator:uiautomator:2.4.0-alpha05. La version 2.4.0-alpha05 contient ces commits.

Modifications apportées à l'API

  • UiObject2#waitForStable a été ajouté comme raccourci pour UiObject2#accessibilityNodeInfo#waitForStable()

Version 2.4.0-alpha04

4 juin 2025

Publication d'androidx.test.uiautomator:uiautomator:2.4.0-alpha04. La version 2.4.0-alpha04 contient ces commits.

Modifications apportées à l'API

  • Changement de nom : onView devient onElement pour indiquer clairement que cela fonctionne avec Compose (I53a3b, b/419006806)

Correction de bugs

Version 2.4.0-alpha03

20 mai 2025

Publication d'androidx.test.uiautomator:uiautomator:2.4.0-alpha03. La version 2.4.0-alpha03 contient ces commits.

Correction de bugs

  • Correction de waitForStableInActiveWindow qui générait une exception NPE dans certains cas (Ibf50f, b/417046391)

Version 2.4.0-alpha02

7 mai 2025

Publication d'androidx.test.uiautomator:uiautomator:2.4.0-alpha02. La version 2.4.0-alpha02 contient ces commits.

Nouvelles fonctionnalités

  • Forme initiale de la nouvelle API Uiautomator. UiAutomatorTestScope peut être créé via la fabrique uiAutomator qui donne accès aux nouvelles API onView.
  • Règles Lint initiales pour avertir de l'utilisation de AccessibilityNodeInfo#getText et suggérer l'utilisation de textAsString.

Modifications apportées à l'API

  • Ajout de Configurator#setDefaultDisplayId pour définir un ID d'affichage permettant de limiter toutes les recherches (Icdf17).
  • Modification de Searchable (interface partagée par UiDevice et UiObject2) pour qu'il soit public pour plus de commodité (I67f18).

Correction de bugs

  • Correction de la gestion des touches méta dans UiDevice#pressKeyCodes. (I73f80).
  • Mise à jour de UiDevice#getWindowRoots pour qu'il renvoie toujours les racines dans l'ordre Z (I87426).
  • Correction d'un problème qui entraînait l'incomplétude de certains gestes (I60dd3, If4edd).
  • Correction d'une rare boucle infinie lors de l'appel de UiDevice#scrollUntil (I39989).

Version 2.4.0-alpha01

26 juin 2024

Publication d'androidx.test.uiautomator:uiautomator:2.4.0-alpha01. La version 2.4.0-alpha01 contient ces commits.

Modifications apportées à l'API

  • Les méthodes Configurator#getKeyInjectionDelay et setKeyInjectionDelay sont obsolètes, car le paramètre n'est plus utilisé maintenant que le texte est toujours injecté directement plutôt que par des frappes au clavier. (I3bcc5).

Correction de bugs

  • Mise à jour du délai entre les événements de mouvement UiObject2 pour tenir compte des fréquences d'actualisation dynamiques (c'est-à-dire l'affichage fluide) (I43f12).
  • Réduction de l'instabilité due à l'obsolescence des nœuds d'accessibilité sur certaines UI en invalidant périodiquement le cache d'accessibilité (I3be25).
  • Correction des StaleObjectException qui se produisaient lors de l'appel de toString ou hashCode sur un UiObject2 obsolète. (I38ea1).
  • Amélioration des performances de UiWatcher en ignorant les appels waitForIdle inutiles. (I8c65e).
  • Correction des inexactitudes de Javadoc, en particulier pour clarifier quand chaque paramètre Configurator est utilisé. (Ie10b1, I71631).

Version 2.3.0

Version 2.3.0

21 février 2024

Publication d'androidx.test.uiautomator:uiautomator:2.3.0. Liste des commits de la version 2.3.0

Changements importants depuis la version 2.2.0

  • Compatibilité multi-écran : ajout de la prise en charge de la recherche et de l'opération sur des objets sur plusieurs écrans, et des méthodes UiDevice pour gérer les écrans secondaires (Ie6544, I912cd).
  • Nouveaux sélecteurs :
    • Ajout de By.displayId pour sélectionner des objets par leur ID d'affichage (I1825b).
    • Ajout de By.hasParent et By.hasAncestor pour sélectionner des objets en fonction de leurs parents (I93c36).
    • Ajout de méthodes By.hint pour sélectionner des objets par leur texte d'aide (Idd345).
  • Conditions personnalisées : une interface Condition a été exposée pour prendre en charge les conditions d'attente personnalisées, et les méthodes UiDevice#wait, UiObject2#wait et UiObject2#scrollUntil correspondantes ont été ajoutées (27c0ea, 099d6e).
  • Correction de bugs et fiabilité
    • Correction d'un problème entraînant parfois des erreurs dans le calcul de la taille de l'affichage et pouvant ignorer certaines parties de l'écran (Ifc016). Il peut être nécessaire d'ajuster les coordonnées et les décalages utilisés dans les tests.
    • Mise à jour de l'injection MotionEvent pour améliorer la précision (678ca3) et mieux émuler les gestes de l'utilisateur (454450).
    • Amélioration de la fiabilité des défilements (I7b059), des rotations (c6cea0), des clics longs (49572b), des pincements (3c619a), etc.

Version 2.3.0-rc01

7 février 2024

Publication d'androidx.test.uiautomator:uiautomator:2.3.0-rc01 sans aucune modification. Liste des commits de la version 2.3.0-rc01

Version 2.3.0-beta01

13 décembre 2023

Publication d'androidx.test.uiautomator:uiautomator:2.3.0-beta01. Liste des commits de la version 2.3.0-beta01.

Modifications apportées à l'API

  • Les méthodes de marge basées sur un pourcentage UiObject2 ont été renommées setGestureMarginPercentage et setGestureMarginsPercentage pour plus de cohérence (I24435).

Correction de bugs

  • Amélioration de l'erreur générée lorsqu'un écran secondaire est introuvable ou inaccessible (116b23)

Version 2.3.0-alpha05

1er novembre 2023

Publication d'androidx.test.uiautomator:uiautomator:2.3.0-alpha05. Liste des commits de la version 2.3.0-alpha05.

Modifications apportées à l'API

  • Ajout de UiObject2#getDrawingOrder pour exposer les informations sur l'ordre de dessin (index Z). (I5dfa4).
  • Ajout de méthodes UiDevice pour obtenir, définir, figer et libérer la rotation des écrans secondaires. (I912cd).

Correction de bugs

  • Ajout d'une nouvelle tentative à UiObject2#scrollUntil lorsque la fin du défilement n'a pas pu être détectée (Ibac6f).
  • Correction du problème lié à l'utilisation d'une instance Instrumentation obsolète par UiDevice si elle était recréée (I18cae).
  • Correction d'une éventuelle NPE si l'ID d'affichage ne peut pas être déterminé lors du vidage des nœuds (Icafcb).
  • Avertissement ajouté lors de clics/défilements sur des objets non cliquables/défilables (I4a5d9).
  • Réduction de la vitesse de défilement par défaut de UiObject2 pour améliorer la fiabilité (I5e071).

Version 2.3.0-alpha04

26 juillet 2023

Publication d'androidx.test.uiautomator:uiautomator:2.3.0-alpha04. Liste des commits de la version 2.3.0-alpha04.

Modifications apportées à l'API

  • Ajout de By.hasParent et By.hasAncestor pour permettre la recherche d'objets en fonction de leurs parents (I93c36).
  • Ajout de UiObject2#getHint pour récupérer le texte d'aide d'un objet et des méthodes By.hint pour sélectionner des objets en fonction de leur texte d'aide (Idd345).
  • Ajout de By.displayId pour permettre la sélection d'objets en fonction de l'écran sur lequel ils se trouvent (I1825b).
  • Ajout des méthodes UiDevice#getDisplayHeight(int) et UiDevice#getDisplayWidth(int) pour trouver les dimensions d'un écran par son ID (Ie6544).
  • Ajout des méthodes wait(SearchCondition, long) et wait(UiObject2Condition, long) pour assurer la rétrocompatibilité (Iebfda).
  • UiDevice#executeShellCommand est désormais public, mais déconseillé au lieu d'être masqué (Ic48a1).

Correction de bugs

  • Mise à jour de l'injection MotionEvent pour réduire l'instabilité en privilégiant la précision des gestes plutôt que la vitesse (678ca3).
  • Ajout du traçage aux méthodes gourmandes en ressources pour identifier les goulots d'étranglement (d17de3).
  • Ajout d'un mécanisme de nouvelle tentative lors de l'établissement d'une connexion UiAutomation (048caf).
  • Correction d'une éventuelle NPE provenant de nœuds nuls dans UiDevice#dumpWindowHierarchy (b725eb).
  • Correction des erreurs inattendues lors de l'interrogation ou de l'utilisation d'écrans privés (985db6, 7053d4).

Version 2.3.0-alpha03

19 avril 2023

Publication d'androidx.test.uiautomator:uiautomator:2.3.0-alpha03. Liste des commits de la version 2.3.0-alpha03.

Modifications apportées à l'API

  • Exposition d'une interface Condition pour autoriser des conditions d'attente personnalisées au lieu de s'appuyer uniquement sur les conditions intégrées dans Until, et mise à jour des méthodes UiDevice#wait et UiObject2#wait pour accepter cette interface (27c0ea).
  • Ajout de UiObject2#scrollUntil pour permettre le défilement jusqu'à ce qu'une condition soit remplie et pour atteindre la parité avec UiScrollable (099d6e).
  • Ajout de UiDevice#setOrientationPortrait et setOrientationLandscape pour faciliter les rotations sur différents types d'appareils (e13cb7).
  • Ajout de UiObject2#setGestureMarginPercent pour permettre de définir des marges par rapport à la taille de l'objet. (Ib8c77)

Correction de bugs

  • Correction des méthodes UiScrollable qui utilisaient parfois des coordonnées non valides sur les SDK 18 à 22 (b53ece).
  • Correction de l'échec de la modification du texte par UiObject2#setText et clearText sur les SDK 18 et 19 (77e41d).
  • Correction des UiWatcher qui ne s'exécutaient pas dans le bon ordre (c85f92).
  • Correction d'un problème où la rotation de l'appareil n'était pas encore terminée après un changement d'orientation UiDevice (c6cea0).
  • Amélioration de la fiabilité des clics longs, des déplacements et des pincements (49572b, 3c619a).

Version 2.3.0-alpha02

11 janvier 2023

Publication de androidx.test.uiautomator:uiautomator:2.3.0-alpha02. Liste des commits de la version 2.3.0-alpha02.

Modifications apportées à l'API

  • Journalisation retravaillée dans la bibliothèque pour fournir plus d'informations, signaler les problèmes potentiels et améliorer la cohérence.
  • Ajout de UiDevice#pressKeyCodes pour permettre d'appuyer simultanément sur plusieurs touches, par exemple POWER et VOLUME_DOWN pour faire une capture d'écran (22e525).
  • Ajout de UiDevice#setCompressedLayoutHierarchy et abandon d'UiDevice#setCompressedLayoutHeirarchy pour corriger une faute de frappe dans le nom de la méthode (4e2f65).
  • Marquage de UiAutomatorInstrumentationTestRunner comme obsolète, car cette méthode gère les UiAutomatorTestCase obsolètes et n'est plus nécessaire (be6c85).
  • Mise à jour du délai entre UiObject2 MotionEvent à deux fois la fréquence d'actualisation de l'écran afin de mieux émuler les gestes de l'utilisateur (454450).
  • Ajout de la compatibilité pour le texte couvrant plusieurs lignes et la correspondance de description (1625e6, b/255787130).

Corrections de bugs

  • Correction des erreurs StaleObjectException générées occasionnellement lors de l'interrogation ou de l'attente d'objets (4cbcc0).
  • Correction des valeurs renvoyées par UiScrollable#scrollToBeginning, scrollToEnd, flingToBeginning et flingToEnd n'indiquant pas si la fin ou le début était atteint (d33e06).
  • Correction des méthodes UiScrollable#scrollForward et scrollBackward qui ignoraient le délai d'inactivité configuré (29e4f3).
  • Correction du constructeur de copie BySelector qui ne gérait pas les sélecteurs de profondeur (6c7b91).
  • Correction du traitement des valeurs de pourcentage non valides dans UiObject#pinchIn et pinchOut (01b973).
  • Correction d'un problème rare qui empêchait la prise en charge du mode multifenêtre si la connexion UiAutomation sous-jacente était réinitialisée (1bb956).

Version 2.3.0-alpha01

7 septembre 2022

Publication de androidx.test.uiautomator:uiautomator:2.3.0-alpha01. Liste des commits de la version 2.3.0-alpha01.

Modifications apportées à l'API

  • Annotation de la valeur nulle de toutes les méthodes publiques.
  • Passage à une injection asynchrone de MotionEvent avec un court délai pour des gestes UiObject2 plus fluides.
  • Intervalle d'interrogation réduit en attendant de passer de 1 000 à 100 ms.
  • Mise à jour de UiDevice#wakeUp et UiDevice#sleep pour utiliser KEYCODE_WAKEUP et KEYCODE_SLEEP afin de prendre en charge les appareils qui ignorent le bouton Marche/Arrêt.
  • Ajout de UiObject2#getDisplayId et d'une prise en charge de la recherche et de la gestion des objets sur plusieurs écrans.
  • Ajout des méthodes UiObject#click et UiObject2#clickAndWait pour cliquer sur un point à l'aide de ses coordonnées

Correction de bugs

  • Correction d'un problème entraînant parfois des erreurs dans le calcul de la taille de l'affichage et pouvant ignorer certaines parties de l'écran, notamment en mode multifenêtre. (Ifc016c)
  • Correction de la mise à l'échelle des captures d'écran dans UiDevice#takeScreenshot. (Id80ad6)
  • Amélioration de la fiabilité de Until.scrollFinished et UiObject2#scroll. (I7b0595)
  • Correction des avertissements de IncorrectContextUseViolation en mode strict. (Iffa6a0)