Test Uiautomator
Dernière mise à jour | Version stable | Version finale | Version bêta | Version alpha |
---|---|---|---|---|
7 mai 2025 | 2.3.0 | - | - | 2.4.0-alpha02 |
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-alpha02" }
Kotlin
dependencies { // Use to implement UIAutomator tests androidTestImplementation("androidx.test.uiautomator:uiautomator:2.4.0-alpha02") }
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.
Pour en savoir plus, consultez la documentation sur l'outil Issue Tracker.
Version 2.4
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 l'usineuiAutomator
qui permet d'accéder aux nouvelles APIonView
. - Règles lint initiales pour avertir de l'utilisation de
AccessibilityNodeInfo#getText
et suggérer l'utilisation detextAsString
.
Modifications apportées à l'API
- Ajout de
Configurator#setDefaultDisplayId
pour définir un ID d'affichage afin de limiter toutes les recherches à (Icdf17). - Modification de
Searchable
(interface partagée parUiDevice
etUiObject2
) en public pour plus de commodité (I67f18).
Correction de bugs
- Correction de la gestion des touches méta dans
UiDevice#pressKeyCodes
. (I73f80). - Modification 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 boucle infinie rare 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
Configurator#getKeyInjectionDelay
etsetKeyInjectionDelay
sont obsolètes, car le paramètre n'est plus utilisé maintenant que le texte est toujours injecté directement plutôt que par pression sur les touches. (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 (par exemple, l'affichage fluide) (I43f12). - Amélioration de la fiabilité en raison de 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 detoString
ou dehashCode
sur unUiObject2
obsolète. (I38ea1). - Amélioration des performances de
UiWatcher
en ignorant les appelswaitForIdle
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: prise en charge de la recherche et de l'utilisation d'objets sur plusieurs écrans, ainsi que de méthodes
UiDevice
pour gérer les écrans secondaires (Ie6544, I912cd). - Nouveaux sélecteurs :
- Conditions personnalisées: exposition d'une interface
Condition
pour prendre en charge les conditions d'attente personnalisées, et ajout des méthodesUiDevice#wait
,UiObject2#wait
etUiObject2#scrollUntil
correspondantes (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) Les coordonnées et les décalages utilisés dans les tests peuvent devoir être ajustés.
- 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
- Renommage des méthodes de marge basées sur un pourcentage
UiObject2
ensetGestureMarginPercentage
etsetGestureMarginsPercentage
pour plus de cohérence (I24435)
Correction de bugs
- Amélioration de l'erreur générée lorsqu'un écran secondaire n'est pas détecté ou n'est pas accessible (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 des informations sur l'ordre de dessin (indice Z). (I5dfa4). - Ajout de méthodes
UiDevice
pour obtenir, définir, figer et dégeler la rotation des écrans secondaires. (I912cd)
Correction de bugs
- Ajout d'une nouvelle tentative dans
UiObject2#scrollUntil
lorsque la fin du défilement n'a pas pu être détectée (Ibac6f). - Correction d'un problème qui entraînait l'utilisation d'une instance
Instrumentation
obsolète parUiDevice
si elle était recréée (I18cae). - Correction d'un éventuel NPE si l'ID d'affichage ne peut pas être déterminé lors du vidage des nœuds (Icafcb).
- Ajout d'un avertissement lors de l'exécution 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
etBy.hasAncestor
pour permettre de rechercher des objets en fonction de leurs parents (I93c36). - Ajout de
UiObject2#getHint
pour récupérer le texte d'indice d'un objet et de méthodesBy.hint
pour sélectionner des objets en fonction de leur texte d'indice (Idd345). - Ajout de
By.displayId
pour permettre de sélectionner des objets en fonction de l'écran sur lequel ils se trouvent (I1825b). - Ajout des méthodes
UiDevice#getDisplayHeight(int)
etUiDevice#getDisplayWidth(int)
pour trouver les dimensions d'un écran à l'aide de son ID (Ie6544). - Ajout à nouveau des méthodes
wait(SearchCondition, long)
etwait(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 donnant la priorité à la précision des gestes par rapport à la vitesse (678ca3). - Ajout du traçage aux méthodes gourmandes en ressources pour identifier les goulots d'étranglement des performances (d17de3).
- Ajout d'un mécanisme de nouvelle tentative lors de l'établissement d'une connexion UiAutomation (048caf).
- Correction d'un NPE possible à partir de nœuds nuls dans
UiDevice#dumpWindowHierarchy
(b725eb). - Correction des erreurs inattendues lors de la requête ou de l'exécution d'opérations sur des é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 permettre des conditions d'attente personnalisées au lieu de s'appuyer uniquement sur les éléments intégrés deUntil
, et mise à jour des méthodesUiDevice#wait
etUiObject2#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é avecUiScrollable
(099d6e). - Ajout de
UiDevice#setOrientationPortrait
etsetOrientationLandscape
pour faciliter les rotations entre les 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 du problème qui empêchait
UiObject2#setText
etclearText
de modifier le texte sur les SDK 18 et 19 (77e41d). - Correction des
UiWatcher
qui n'étaient pas exécutés dans le bon ordre (c85f92). - Correction d'un problème où la rotation de l'appareil n'était peut-être pas encore terminée après un changement d'orientation de
UiDevice
(c6cea0). - Amélioration de la fiabilité des clics longs, des glissements 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 lesUiAutomatorTestCase
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
etflingToEnd
n'indiquant pas si la fin ou le début était atteint (d33e06). - Correction des méthodes
UiScrollable#scrollForward
etscrollBackward
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
etpinchOut
(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 gestesUiObject2
plus fluides. - Intervalle d'interrogation réduit en attendant de passer de 1 000 à 100 ms.
- Mise à jour de
UiDevice#wakeUp
etUiDevice#sleep
pour utiliserKEYCODE_WAKEUP
etKEYCODE_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
etUiObject2#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
etUiObject2#scroll
. (I7b0595) - Correction des avertissements de
IncorrectContextUseViolation
en mode strict. (Iffa6a0)