Tutoriel UIAutomatorViewer : Inspecteur pour Android Tests

⚡ Résumé intelligent

UIAutomatorViewer est un inspecteur graphique fourni avec Android Kit de développement logiciel (SDK) qui capture une capture d'écran de l'appareil, affiche la hiérarchie des vues et expose les attributs Appium doit pouvoir localiser les boutons, les champs et les étiquettes de manière fiable.

  • (I.e. Ce qu'il fait: Scanne un flux vidéo en direct Android L'écran affiche la hiérarchie des nœuds à côté d'une feuille de propriétés pour l'élément sélectionné.
  • ☑️ Où il vit : Le lanceur se trouve dans le Android Le dossier des outils SDK est nommé uiautomatorviewer.bat et lance un Java fenêtre du bureau.
  • Flux de capture : Activez les options pour les développeurs, connectez le téléphone via USB, puis appuyez sur Capture d'écran de l'appareil pour charger l'écran actuel.
  • 🧪 Carte d'attributsping: Le texte devient le nom, l'identifiant de ressource devient l'identifiant, la classe devient le nom de la classe et la description du contenu devient l'identifiant d'accessibilité.
  • Dépannage: Le message « Non » Android L'indication « des périphériques ont été détectés par adb » fait presque toujours référence à un câble, un pilote ou un paramètre de débogage.
  • (I.e. Option moderne : Appium L'inspecteur couvre Android et iOS et reste disponible après la mise hors service de l'ancien package d'outils SDK.

Inspecteur UIAutomatorViewer pour Android test d'applications

Qu'est-ce que UIAutomatorViewer ?

UIAutomatorViewer est un outil d'interface graphique permettant de scanner et d'analyser les composants d'interface utilisateur d'une application. Android application. Pour automatiser n'importe quelle application. Android application utilisant AppiumL'utilisateur doit identifier les objets dans l'application testée (AUT). Avec UIAutomatorViewer, il est possible d'inspecter l'interface utilisateur d'une application. Android application permettant de découvrir la hiérarchie et d'afficher les différentes propriétés (id, texte…) de l'élément.

Lors de l'exécution de scripts d'automatisation, Appium Ce script utilise UIAutomatorViewer pour identifier les différentes propriétés de l'objet et s'en servir pour trouver l'objet recherché. Le reste de cette page détaille ce principe : lire l'attribut dans l'inspecteur, puis le réutiliser comme localisateur dans le script.

La capture d'écran ci-dessous montre l'outil dans son état de fonctionnement normal : l'écran de l'appareil capturé à gauche, l'arborescence des nœuds en haut à droite et la feuille de propriétés du nœud sélectionné en dessous.

Fenêtre UIAutomatorViewer affichant l'écran de l'appareil capturé, l'arborescence de la hiérarchie des nœuds et le panneau de détails du nœud.

Prérequis pour l'utilisation de UIAutomatorViewer

L'inspecteur lit l'écran en direct d'un véritable téléphone portable ou d'un émulateur ; une petite configuration doit donc être effectuée avant que la fenêtre n'affiche quoi que ce soit.

  • A Java Kit de développement: uiautomatorviewer est un Java Application de bureau lancée par un script batch, un JDK doit donc être installé et accessible via le chemin système.
  • Le Android SDK: Le visualiseur est intégré au SDK les outils Le dossier contient le SDK, qui doit donc être installé avant que le lanceur ne soit présent sur le disque.
  • Outils de plateforme et adb : le spectateur communique avec l'appareil via le Android Pont de débogage, donc adb doit être installé et capable de détecter le combiné.
  • Options pour développeurs et débogage USB : Les deux options doivent être activées dans les paramètres de l'appareil, sinon adb ne listera jamais l'appareil.
  • Un câble USB compatible avec le transfert de données et son pilote : un câble de charge uniquement, ou un pilote du fabricant manquant sur Windows, produit une liste de périphériques vide.
  • L'application testée : L'application doit être installée et ouverte sur l'appareil, car l'inspecteur capture tout ce qui est actuellement affiché à l'écran.

Une fois ces six éléments en place, l'étape de téléchargement est rapide.

Comment télécharger et installer UIAutomatorViewer

UIAutomatorViewer fait partie de Android Le gestionnaire de SDK sera accessible une fois installé. Téléchargez et installez le gestionnaire de SDK. Android SDK de le fonctionnaire Android Studio page de téléchargement.

Une fois que le Android Le SDK est installé, accédez à ce chemin :

c:\users\<username>\AppData\Local\Android\sdk\tools

Vous remarquerez un fichier batch portant ce nom :

uiautomatorviewer.bat

Double Cliquez dessus pour lancer l'interface graphique de UIAutomatorViewer. La liste des dossiers ressemble à celle ci-dessous, avec le fichier batch placé aux côtés des autres outils du SDK.

Android dossier des outils SDK dans Windows Explorateur contenant le lanceur de traitement par lots uiautomatorviewer

⚠️ Note de version : AndroidLa documentation héritée de l'interface utilisateur de UI Automator décrit encore le lancement de l'outil depuis /outils/mais l'appareil autonome obsolète Android Outils SDK Ce package n'est plus proposé par le gestionnaire de SDK dans la version actuelle. Android Studio Les installations anciennes et les archives SDK plus anciennes contiennent toujours le lanceur ; lors d’une nouvelle installation, le fichier est généralement absent, et Appium Inspector est l'outil de remplacement pratique. Les étapes initiales ci-dessus sont conservées car elles restent valables pour toute machine possédant encore le dossier d'outils.

Comment utiliser UIAutomatorViewer pour trouver des objets dans votre application

La séquence de capture est toujours la même : préparer l’appareil, placer l’écran souhaité devant la caméra, puis prendre la photo.

  1. Permettre options de développeur sur votre appareil. Lire Androidguide de configuration des options de développement sur l'appareil pour savoir comment activer les options pour développeurs sur Android dispositifs.
  2. Connectez votre Android connecter l'appareil au PC via un câble USB.
  3. Sélectionnez l'option "GuruL'application « 99 » figure dans la liste des applications, comme indiqué ci-dessous.

Guru99 candidatures sélectionnées parmi les Android liste d'applications pour appareils

  1. Cliquez sur Capture d'écran de l'appareil bouton pour actualiser UIAutomatorViewer et pour charger le GuruL'interface graphique de l'application 99 est intégrée à l'outil. Le bouton se trouve dans la barre d'outils mise en évidence ci-dessous.

Bouton de la barre d'outils de capture d'écran de l'appareil utilisé pour actualiser la capture UIAutomatorViewer

  1. Une fois l'actualisation terminée, une capture d'écran de GuruL'application 99 s'ouvre dans le volet de gauche.

Capturé Guru99 écrans d'application chargés dans le volet gauche de UIAutomatorViewer

  1. Comme vous le voyez sur l'image ci-dessus, sur le côté droit de la fenêtre se trouvent 2 panneaux.

Le panneau supérieur présente la hiérarchie des nœuds, c'est-à-dire la manière dont les composants de l'interface utilisateur sont organisés et contenus. Cliquer sur un nœud permet d'afficher les propriétés de l'élément d'interface utilisateur correspondant dans le panneau inférieur.

  1. Sélectionnez le bouton « Quiz » dans l'image ci-dessus pour afficher ses différentes propriétés (texte, identifiant de ressource…).

Bouton « Quiz » sélectionné dans l’arborescence des nœuds, ses propriétés étant listées dans le panneau de détails inférieur.

Comment utiliser ces propriétés pour identifier les éléments à automatiser

Vous ne pouvez pas utiliser directement les propriétés ; chacune possède un nom différent dans l’API d’automatisation. Voyons comment exploiter ces valeurs de propriété. Les attributs suivants permettent d’identifier le bouton « Quiz » dans le… Guru99 app.

Attribut dans UIAutomatorViewer Nom du localisateur dans le script Utilisation typique
texte Le nom Étiquette visible sur un bouton ou un champ statique
identifiant de ressource id Le choix le plus stable lorsque le développeur en définit un
classe nom du cours Sélectionner un groupe de widgets du même type
contenu-desc identifiant d'accessibilité Localisateur multiplateforme qui aide également les lecteurs d'écran

Chaque carteping est visible directement dans le panneau de détails du nœud. texte L'attribut peut être utilisé comme « nom », comme le montre la ligne de propriété ci-dessous.

Ligne de détail du nœud affichant la valeur de l'attribut texte utilisé comme localisateur de nom

Le identifiant de ressource L'attribut peut être utilisé comme « identifiant ».

Ligne de détail du nœud affichant la valeur de l'attribut resource-id utilisée comme localisateur d'identifiant

Le classe L'attribut peut être utilisé comme « className ».

Ligne de détail du nœud affichant la valeur de l'attribut de classe utilisée comme localisateur className

Le contenu-desc L'attribut peut être utilisé comme « AccessibilityId ».

Ligne de détail du nœud affichant la valeur de l'attribut content-desc utilisée comme localisateur d'identifiant d'accessibilité

En plus des attributs ci-dessus, nous pouvons écrire des expressions XPath pour l'identification des objets. Ces noms d'attributs sont également ceux que vous transmettez. capacités souhaitées et les stratégies de localisation une fois le script en cours d'exécution.

Comment créer des localisateurs XPath à partir des attributs de UIAutomatorViewer

XPath est utilisé lorsqu'aucun attribut n'est unique individuellement. Le panneau de détails du nœud affiche toutes les valeurs nécessaires à l'expression ; ainsi, une expression XPath correspond simplement à l'attribut déjà lu, exprimé sous forme de prédicat.

Parcourez le panneau dans cet ordre :

  1. Sélectionnez le nœud dans le panneau supérieur et lisez son classe, texte, identifiant de ressource et contenu-desc valeurs dans le panneau inférieur.
  2. Privilégiez un seul attribut stable. Si resource-id est renseigné, utilisez-le et arrêtez-vous là ; aucune requête XPath n’est nécessaire.
  3. Si aucun attribut n'est unique, combinez deux attributs dans un seul prédicat.
  4. Si l'étiquette change lors de l'exécution, remplacez le test d'égalité par une correspondance partielle.

Les modèles ci-dessous utilisent les noms d'attributs exactement tels que les indique UIAutomatorViewer.

<!-- match on the visible label -->
//*[@text='Quiz']

<!-- match on the resource-id reported by the viewer -->
//*[@resource-id='com.example.app:id/quiz_button']

<!-- match on the widget class -->
//android.widget.Button[@text='Quiz']

<!-- partial match when the label is dynamic -->
//*[contains(@text,'Qui')]

<!-- two attributes combined for a unique match -->
//*[@class='android.widget.Button' and @content-desc='Quiz']

Quelques règles permettent d'éviter que ces expressions ne deviennent fragiles. Les chemins absolus qui parcourent l'arbre entier deviennent invalides dès qu'un développeur ajoute un conteneur à une mise en page ; il est donc conseillé de commencer chaque expression par une double barre oblique et de la faire correspondre à un attribut. Les prédicats basés sur un index se comportent de la même manière : ils restent valides jusqu'à ce qu'une nouvelle ligne s'affiche à l'écran. De plus, une expression unique sur un écran de téléphone peut correspondre à plusieurs nœuds sur une tablette ; il est donc recommandé de réexaminer le même écran sur les deux formats avant d'intégrer le localisateur à une suite. Cette même rigueur s'applique à… XPath dans Selenium, où l'arbre est un DOM plutôt qu'une hiérarchie de vues.

Erreurs pouvant survenir lors de l'utilisation d'UIAutomatorViewer

La plupart des pannes surviennent avant même qu'un seul nœud ne soit dessiné, et la quasi-totalité d'entre elles sont liées à la connexion entre le poste de travail et le combiné.

  • Je vois l'erreur — « Non » Android Des appareils ont été détectés par adb, comme le montre la capture d'écran ci-dessous. Comment puis-je résoudre ce problème ?

La boîte de dialogue UIAutomatorViewer signale qu'aucun Android Les appareils ont été détectés par adb

Solution: Assurez-vous que votre appareil est connecté à l'ordinateur.

Le tableau ci-dessous étend cette réponse aux autres messages rencontrés le plus fréquemment par les testeurs.

Symptôme Cause probable Fixer
Non Android Les appareils ont été détectés par adb Appareil non connecté, débogage USB désactivé ou câble de charge uniquement Reconnectez-vous à l'aide d'un câble de données, activez le débogage USB, puis vérifiez que le combiné apparaît bien dans la liste des périphériques adb.
Appareil répertorié comme non autorisé L'invite de reconnaissance d'empreinte digitale RSA n'a jamais été acceptée sur le combiné. Déverrouillez l'écran, reconnectez-vous et appuyez sur Autoriser le débogage USB.
Le fichier uiautomatorviewer.bat est manquant. Le package d'outils SDK obsolète n'est pas installé. Utilisez une installation SDK existante qui le contient encore, ou passez à Appium inspecteur
La hiérarchie est vide ou la capture échoue. L'écran a changé pendant le transfert, ou l'application bloque la capture d'écran. Maintenez l'écran immobile et prenez à nouveau la capture d'écran ; les écrans sécurisés ne peuvent pas être capturés.
Le contenu de WebView s'affiche sous forme d'un seul nœud. Le visualiseur ne lit que les vues natives Inspectez le contenu Web à l'aide des outils de développement du navigateur ou d'un inspecteur prenant en charge le contexte Web.

UIAutomatorViewer vs Appium Inspecteur vs Inspecteur de mise en page

On utilise généralement trois inspecteurs contre Android Les écrans, et ils résolvent des problèmes légèrement différents.

Critère UIAutomatorViewer Appium inspecteur Android Studio Inspecteur de mise en page
Navires avec L'héritage Android package d'outils SDK Une application de bureau autonome Android Studio
Plateformes inspectées Android uniquement Android et iOS Android uniquement
Nécessite un serveur en fonctionnement Non, il communique directement avec adb. Oui, il se connecte à un Appium session serveur Non, il s'attache à un processus débogable
Génère un code de localisation Non, les valeurs sont copiées manuellement. Oui, il suggère des localisateurs et peut enregistrer des actions Non, c'est une vue de débogage
Meilleur adapté à Recherche rapide d'attributs sur une configuration plus ancienne Création et validation de localisateurs pour une suite Diagnostic des problèmes de mise en page et de rendu

Pour une suite qui traverse déjà AppiumL'Inspecteur est le successeur naturel : il lit les mêmes attributs, exécute le même pilote UiAutomator2 en arrière-plan et fonctionne également sous iOS. Appium Projet d'inspecteur est régulièrement mis à jour, ce qui en fait un choix plus sûr pour les nouveaux projets, tandis que Layout Inspector reste utile lorsqu'il s'agit de comprendre pourquoi une vue s'affiche de manière anormale plutôt que de trouver une solution. Si vous hésitez encore sur la pile logicielle à utiliser, consultez la comparaison plus détaillée dans notre guide. outils de test d'applications mobiles est une bonne prochaine étape, et exemples de cas de test mobiles montrer à quoi ces localisateurs finissent par alimenter.

FAQ

Seulement en partie. Le visualiseur interprète la hiérarchie native des vues ; une WebView apparaît donc généralement comme un nœud opaque. Inspectez son code HTML à l’aide des outils de développement du navigateur ou d’un inspecteur capable de basculer vers le contexte web.

Non. L'outil est lié au Android Pont de débogage et le Android hiérarchie des vues. Pour les écrans iOS, utilisez Appium inspecteur or Xcodel'inspecteur d'accessibilité de 's, qui lisait à la place l'arborescence des éléments XCUITest.

Cette commande enregistre la même hiérarchie dans un fichier XML sur l'appareil, sans affichage graphique. Elle est utile dans les scripts et sur les machines sans interface graphique, mais vous perdez la superposition de capture d'écran qui permettait de trouver rapidement le nœud souhaité.

Les moteurs de localisation basés sur l'apprentissage automatique combinent plusieurs attributs (texte, classe, position et nœuds voisins) et résolvent l'élément lorsqu'un de ces attributs change. Ce comportement d'auto-réparation réduit les erreurs dues à un identifiant renommé.

Oui. Collez les valeurs des attributs dans un commentaire et Copilot générera généralement le champ d'objet de page correspondant et la méthode de clic. Vérifiez toujours le localisateur généré par rapport à l'écran réel, car la suggestion est une estimation et non une recherche exacte.

Non. Le visualiseur fonctionne avec la version installée sur l'appareil ; un fichier APK que vous n'avez pas compilé peut donc être analysé. Seuls les attributs définis par le développeur, tels que resource-id et content-desc, seront renseignés.

Oui. Un émulateur se comporte exactement comme un appareil physique lorsqu'il exécute adb ; le bouton « Capture d'écran de l'appareil » fonctionne donc de la même manière. Les émulateurs sont pratiques pour les premières étapes de développement de scripts, mais les tests finaux nécessitent un appareil physique.

Chaque contrôle se voit attribuer un identifiant stable et indépendant de la langue, servant à la fois d'identifiant d'accessibilité dans un script et d'étiquette prononcée par un lecteur d'écran. La fiabilité et l'accessibilité des tests s'en trouvent améliorées grâce à cette simple modification d'une ligne.

Résumez cet article avec :