UIAutomatorViewer-Tutorial: Inspektor für Android Tests
⚡ Intelligente Zusammenfassung
UIAutomatorViewer ist ein grafischer Inspektor, der mit dem UIAutomatorViewer mitgeliefert wird. Android SDK, das einen Geräte-Screenshot aufnimmt, die Ansichtshierarchie rendert und die Attribute bereitstellt. Appium muss Schaltflächen, Felder und Beschriftungen zuverlässig lokalisieren können.
Was ist UIAutomatorViewer?
UIAutomatorViewer ist ein GUI-Tool zum Scannen und Analysieren der UI-Komponenten eines Android Anwendung. Um beliebige Prozesse zu automatisieren. Android Anwendung mit AppiumEin Benutzer muss die Objekte in der zu testenden Anwendung (AUT) identifizieren. Mit UIAutomatorViewer können Sie die Benutzeroberfläche einer solchen Anwendung untersuchen. Android Anwendung zum Ermitteln der Hierarchie und Anzeigen verschiedener Eigenschaften (ID, Text usw.) des Elements.
Beim Ausführen von Automatisierungsskripten Appium UIAutomatorViewer wird verwendet, um verschiedene Eigenschaften des Objekts zu ermitteln und anhand dieser Eigenschaften das gewünschte Objekt zu identifizieren. Dieses Prinzip – das Attribut im Inspektor auszulesen und es dann im Skript als Locator wiederzuverwenden – wird im Folgenden näher erläutert.
Der folgende Screenshot zeigt das Tool in seinem normalen Arbeitszustand: links der aufgenommene Gerätebildschirm, oben rechts die Knotenstruktur und darunter das Eigenschaftenfenster für den ausgewählten Knoten.
Voraussetzungen für die Verwendung von UIAutomatorViewer
Der Inspektor liest den Live-Bildschirm eines echten Mobiltelefons oder Emulators aus, daher müssen einige wenige Einstellungen vorgenommen werden, bevor das Fenster überhaupt etwas anzeigt.
- A Java Entwicklungs-Kit: uiautomatorviewer ist ein Java Die Desktop-Anwendung wird von einem Batch-Skript gestartet, daher muss ein JDK installiert und im Systempfad erreichbar sein.
- Das Android SDK: Der Viewer ist im SDK enthalten. Werkzeuge Der Ordner ist so beschaffen, dass das SDK installiert werden muss, bevor der Launcher auf der Festplatte vorhanden ist.
- Plattformtools und adb: Der Betrachter spricht über das Gerät mit diesem. Android Debug Bridge, also adb muss installiert sein und das Mobilteil erkennen können.
- Entwickleroptionen und USB-Debugging: Beide Einstellungen müssen in den Geräteeinstellungen aktiviert sein, andernfalls wird das Gerät von ADB nicht angezeigt.
- Ein datenfähiges USB-Kabel und Treiber: ein reines Ladekabel oder ein fehlender Herstellertreiber Windows, erzeugt eine leere Geräteliste.
- Die zu testende Anwendung: Die App muss auf dem Gerät installiert und geöffnet sein, da der Inspektor alles aufzeichnet, was sich aktuell auf dem Bildschirm befindet.
Sind diese sechs Elemente vorhanden, ist der Download-Schritt kurz.
So laden und installieren Sie UIAutomatorViewer
UIAutomatorViewer ist ein Teil von Android Der SDK-Manager ist nach dessen Installation verfügbar. Laden Sie ihn herunter und installieren Sie ihn. Android SDK von der Beamte Android Studio Download-Seite.
Sobald die Android Das SDK ist installiert, navigieren Sie zu diesem Pfad:
c:\users\<username>\AppData\Local\Android\sdk\tools
Sie werden eine Batch-Datei mit folgendem Namen bemerken:
uiautomatorviewer.bat
Double Klicken Sie darauf, um die UIAutomatorViewer-Benutzeroberfläche zu starten. Die Ordnerstruktur sieht wie unten dargestellt aus; die Batch-Datei befindet sich neben den anderen SDK-Tools.
⚠️ Versionshinweis: AndroidDie eigene, veraltete Dokumentation von UI Automator beschreibt immer noch, wie man das Tool von dort aus startet. /Werkzeuge/aber die veraltete eigenständige Android SDK-Tools Das Paket wird vom SDK Manager in der aktuellen Version nicht mehr angeboten. Android Studio Releases. Langjährige Installationen und ältere SDK-Archive enthalten den Launcher noch; bei einer Neuinstallation fehlt die Datei normalerweise. Appium Inspector ist der praktische Ersatz. Die oben beschriebenen ursprünglichen Schritte bleiben erhalten, da sie für alle Maschinen, die noch den Werkzeugordner besitzen, weiterhin korrekt sind.
So verwenden Sie UIAutomatorViewer, um Objekte in Ihrer Anwendung zu finden
Die Aufnahmesequenz ist immer gleich: Gerät vorbereiten, den gewünschten Bildschirm vor die Kamera halten und dann das Foto aufnehmen.
- Ermöglichen Entwickleroptionen auf Ihrem Gerät. Lesen Sie AndroidLeitfaden zur Konfiguration der Entwickleroptionen auf dem Gerät Um zu erfahren, wie man die Entwickleroptionen aktiviert, Android Geräte.
- verbinden Sie Ihren Android Gerät über ein USB-Kabel mit dem PC verbinden.
- Wählen Sie das "Guru99”-App aus der Anwendungsliste, wie unten dargestellt.
- Klicken Sie auf die Geräte-Screenshot Schaltfläche zum Aktualisieren des UIAutomatorViewer und zum Laden der Guru99 Anwendungs-GUI in das Tool. Die Schaltfläche befindet sich in der unten hervorgehobenen Symbolleiste.
- Nach Abschluss der Aktualisierung wird ein Screenshot erstellt. GuruDie Anwendung 99 öffnet sich im linken Bereich.
- Wie Sie im obigen Bild sehen können, befinden sich auf der rechten Seite des Fensters zwei Felder.
Das obere Bedienfeld enthält die Knotenhierarchie – die Anordnung und Unterteilung der UI-Komponenten. Durch Klicken auf einen Knoten werden die Eigenschaften des jeweiligen UI-Elements im unteren Bedienfeld angezeigt.
- Wählen Sie im obigen Bild die Schaltfläche „Quiz“ aus, um deren verschiedene Eigenschaften (Text, Ressourcen-ID usw.) anzuzeigen.
Wie man diese Eigenschaften nutzt, um Elemente für die Automatisierung zu identifizieren
Die Eigenschaften können nicht direkt verwendet werden – jede Eigenschaft hat in der Automatisierungs-API einen anderen Namen. Sehen wir uns an, wie diese Eigenschaftswerte verwendet werden können. Die folgenden Attribute können verwendet werden, um die Schaltfläche „Quiz“ zu identifizieren. Guru99 App.
| Attribut im UIAutomatorViewer | Locatorname im Skript | Typische Verwendung |
|---|---|---|
| Text | Name | Sichtbare Beschriftung auf einer Schaltfläche oder einem statischen Feld |
| Ressourcen-ID | id | Die stabilste Wahl, wenn der Entwickler eine festlegt. |
| Klasse | Klassenname | Auswählen einer Gruppe von Widgets desselben Typs |
| Inhaltsbeschreibung | Barrierefreiheits-ID | Plattformübergreifender Locator, der auch Bildschirmlesegeräten hilft. |
Jede Karteping ist direkt im Knotendetailfenster sichtbar. Text Das Attribut kann als „Name“ verwendet werden, wie die untenstehende Eigenschaftenzeile zeigt.
Das Ressourcen-ID Das Attribut kann als „id“ verwendet werden.
Das Klasse Das Attribut kann als „className“ verwendet werden.
Das Inhaltsbeschreibung Das Attribut kann als „AccessibilityId“ verwendet werden.
Zusätzlich zu den oben genannten Attributen können wir XPath-Ausdrücke zur Objektidentifizierung schreiben. Diese Attributnamen werden auch übergeben. gewünschte Fähigkeiten und Locator-Strategien, sobald das Skript läuft.
Wie man XPath-Locators aus UIAutomatorViewer-Attributen erstellt
XPath dient als Ausweichlösung, wenn kein einzelnes Attribut eindeutig ist. Im Detailbereich des Knotens werden alle für den Ausdruck benötigten Werte angezeigt; ein XPath ist also im Grunde nur das bereits gelesene Attribut in Prädikatform.
Arbeiten Sie die einzelnen Schritte des Bedienfelds in dieser Reihenfolge durch:
- Wählen Sie den Knoten im oberen Bereich aus und lesen Sie dessen Inhalt. Klasse, Text, Ressourcen-ID und Inhaltsbeschreibung Werte im unteren Bereich.
- Verwenden Sie vorzugsweise ein einzelnes, stabiles Attribut. Wenn resource-id belegt ist, verwenden Sie es und beenden Sie die Abfrage – XPath ist nicht erforderlich.
- Wenn nichts eindeutig ist, kombiniere zwei Attribute in einem Prädikat.
- Wenn sich die Bezeichnung zur Laufzeit ändert, wird der Gleichheitstest auf eine Teilübereinstimmung umgestellt.
Die folgenden Muster verwenden die Attributnamen genau so, wie sie von UIAutomatorViewer gemeldet werden.
<!-- 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']
Einige Regeln verhindern, dass diese Ausdrücke fehleranfällig werden. Absolute Pfade, die den gesamten Baum durchlaufen, funktionieren nicht mehr, sobald ein Entwickler ein Layout in einen weiteren Container einbettet. Beginnen Sie daher jeden Ausdruck mit einem Doppelschrägstrich und verwenden Sie stattdessen ein Attribut als Vergleichskriterium. Indexbasierte Prädikate verhalten sich genauso – sie bleiben so lange erhalten, bis der Bildschirm eine Zeile hinzufügt. Ein Ausdruck, der auf einem Smartphone-Bildschirm eindeutig ist, kann auf einem Tablet-Layout mehrere Knoten abdecken. Überprüfen Sie daher denselben Bildschirm auf beiden Geräteformen erneut, bevor Sie den Locator in eine Suite aufnehmen. Dieselbe Vorgehensweise gilt für XPath ein Selenium, wobei der Baum ein DOM und keine Ansichtshierarchie ist.
Fehler, die bei der Verwendung von UIAutomatorViewer auftreten können
Die meisten Fehler treten auf, bevor ein einziger Knoten gezeichnet wird, und fast alle lassen sich auf die Verbindung zwischen der Workstation und dem Mobiltelefon zurückführen.
- Ich sehe den Fehler – „Nein“ Android „Geräte wurden von ADB erkannt“ – wie im Screenshot unten zu sehen. Wie kann ich das Problem beheben?
Lösung: Stellen Sie sicher, dass Ihr Gerät mit dem PC verbunden ist.
Die nachstehende Tabelle erweitert diese Antwort um die anderen Meldungen, die von den Testern am häufigsten angezeigt wurden.
| Symptom | Wahrscheinliche Ursache | Fixieren |
|---|---|---|
| Nein Android Die Geräte wurden von ADB erkannt. | Gerät nicht angeschlossen, USB-Debugging deaktiviert oder nur ein Ladekabel | Stellen Sie die Verbindung mit einem Datenkabel wieder her, aktivieren Sie das USB-Debugging und überprüfen Sie anschließend, ob das Mobiltelefon in der ADB-Geräteliste angezeigt wird. |
| Gerät als nicht autorisiert aufgeführt | Die RSA-Fingerabdruckabfrage wurde auf dem Mobiltelefon nie akzeptiert. | Entsperren Sie den Bildschirm, stellen Sie die Verbindung wieder her und tippen Sie auf „USB-Debugging zulassen“. |
| Die Datei uiautomatorviewer.bat fehlt. | Das veraltete SDK-Tools-Paket ist nicht installiert. | Verwenden Sie eine vorhandene SDK-Installation, die es noch enthält, oder wechseln Sie zu Appium Inspector |
| Die Hierarchie ist leer oder die Erfassung schlägt fehl. | Der Bildschirm hat sich während des Speicherabbilds verändert, oder die App blockiert die Bildschirmaufnahme. | Halten Sie den Bildschirm ruhig und machen Sie erneut ein Foto; gesicherte Bildschirme können nicht erfasst werden. |
| Der WebView-Inhalt wird als einzelner Knoten angezeigt. | Der Viewer liest nur native Ansichten. | Untersuchen Sie Webinhalte mit den Entwicklertools Ihres Browsers oder einem Inspektor, der Webkontext unterstützt. |
UIAutomatorViewer vs Appium Inspektor vs. Layout-Inspektor
Drei Inspektoren werden üblicherweise eingesetzt gegen Android Bildschirme, und sie lösen etwas andere Probleme.
| Kriterium | UIAutomatorViewer | Appium Inspector | Android Studio Layout-Inspektor |
|---|---|---|---|
| Wird mit versendet | Das Vermächtnis Android SDK-Tools-Paket | Eine eigenständige Desktop-Anwendung | Android Studio |
| inspizierte Plattformen | Android einzige | Android und iOS | Android einzige |
| Benötigt einen laufenden Server | Nein, es kommuniziert direkt mit ADB. | Ja, es verbindet sich mit einem Appium Serversitzung | Nein, es bindet sich an einen debugfähigen Prozess an. |
| Generiert Locator-Code | Nein, die Werte werden von Hand kopiert. | Ja, es schlägt Standortdaten vor und kann Aktionen aufzeichnen | Nein, es handelt sich um eine Debugging-Ansicht. |
| am besten geeignet für | Eine schnelle Attributabfrage in einer älteren Konfiguration | Erstellung und Validierung von Locatoren für eine Suite | Diagnose von Layout- und Renderingproblemen |
Für eine Suite, die bereits läuft AppiumDer Inspector ist der natürliche Nachfolger: Er liest dieselben Attribute, verwendet im Hintergrund denselben UiAutomator2-Treiber und funktioniert ebenfalls unter iOS. Appium Inspektorprojekt wird regelmäßig aktualisiert und ist daher die sicherere Wahl für neue Projekte. Der Layout Inspector bleibt hingegen nützlich, wenn es darum geht, warum eine Ansicht fehlerhaft dargestellt wird, und nicht darum, wie man das Problem behebt. Falls Sie sich noch für einen Stack entscheiden müssen, finden Sie einen umfassenderen Vergleich in unserem Leitfaden zu Testtools für mobile Apps ist ein guter nächster Schritt, Beispielhafte mobile Testfälle zeigen, wohin diese Ortungsgeräte letztendlich fließen.







