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 es tut: Scannt ein Live-Gerät Android Der Bildschirm zeigt die Knotenhierarchie neben einem Eigenschaftenfenster für das ausgewählte Element an.
  • ☑️ Wo es lebt: Der Werfer befindet sich im Android SDK-Tools-Ordner als uiautomatorviewer.bat und startet ein Java Desktop-Fenster.
  • Ablauf erfassen: Schalten Sie die Entwickleroptionen ein, schließen Sie das Mobiltelefon über USB an und drücken Sie dann auf „Geräte-Screenshot“, um den aktuellen Bildschirm zu laden.
  • 🧪 Attributkarteping: Aus text wird name, aus resource-id wird id, aus class wird className und aus content-desc wird die accessibility-ID.
  • Fehlerbehebung: Die Botschaft „Nein Android „Geräte wurden von adb erkannt“ deutet fast immer auf ein Kabel, einen Treiber oder eine Debugging-Einstellung hin.
  • 📊 Moderne Option: Appium Inspektor deckt Android und iOS und bleibt auch nach der Einstellung des alten SDK-Tools-Pakets verfügbar.

UIAutomatorViewer-Inspektor für Android Anwendungstests

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.

Das UIAutomatorViewer-Fenster zeigt den Bildschirm des erfassten Geräts, die Knotenhierarchie und das Knotendetailfenster an.

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.

Android SDK-Tools-Ordner Windows Explorer mit dem Batch-Launcher uiautomatorviewer

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

  1. 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.
  2. verbinden Sie Ihren Android Gerät über ein USB-Kabel mit dem PC verbinden.
  3. Wählen Sie das "Guru99”-App aus der Anwendungsliste, wie unten dargestellt.

Guru99 Bewerbungen wurden ausgewählt Android Geräteanwendungsliste

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

Die Schaltfläche in der Werkzeugleiste des Geräts dient zum Aktualisieren der UIAutomatorViewer-Aufnahme.

  1. Nach Abschluss der Aktualisierung wird ein Screenshot erstellt. GuruDie Anwendung 99 öffnet sich im linken Bereich.

Gefangen Guru99 Anwendungsbildschirme wurden in den linken Bereich des UIAutomatorViewer geladen.

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

  1. Wählen Sie im obigen Bild die Schaltfläche „Quiz“ aus, um deren verschiedene Eigenschaften (Text, Ressourcen-ID usw.) anzuzeigen.

Im Knotenbaum ist die Schaltfläche „Quiz“ ausgewählt, deren Eigenschaften im unteren Detailbereich aufgelistet sind.

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.

Knotendetailzeile mit Anzeige des als Namenslocator verwendeten Textattributwerts

Das Ressourcen-ID Das Attribut kann als „id“ verwendet werden.

Knotendetailzeile, die den als ID-Locator verwendeten Wert des Attributs resource-id anzeigt.

Das Klasse Das Attribut kann als „className“ verwendet werden.

Knotendetailzeile, die den als className-Locator verwendeten Klassenattributwert anzeigt

Das Inhaltsbeschreibung Das Attribut kann als „AccessibilityId“ verwendet werden.

Knotendetailzeile, die den als Accessibility-ID-Locator verwendeten Wert des Attributs „content-desc“ anzeigt.

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:

  1. Wählen Sie den Knoten im oberen Bereich aus und lesen Sie dessen Inhalt. Klasse, Text, Ressourcen-ID und Inhaltsbeschreibung Werte im unteren Bereich.
  2. Verwenden Sie vorzugsweise ein einzelnes, stabiles Attribut. Wenn resource-id belegt ist, verwenden Sie es und beenden Sie die Abfrage – XPath ist nicht erforderlich.
  3. Wenn nichts eindeutig ist, kombiniere zwei Attribute in einem Prädikat.
  4. 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?

UIAutomatorViewer-Dialog meldet, dass kein Android Die Geräte wurden von ADB erkannt.

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.

Häufig gestellte Fragen

Nur teilweise. Der Viewer liest die native View-Hierarchie, daher erscheint eine WebView üblicherweise als ein einzelner, undurchsichtiger Knoten. Untersuchen Sie den darin enthaltenen HTML-Code mit den Entwicklertools Ihres Browsers oder verwenden Sie einen Inspektor, der in den Webkontext wechseln kann.

Nein. Das Werkzeug ist an das gebunden. Android Debug Bridge und die Android Ansichtshierarchie. Für iOS-Bildschirme verwenden Sie Appium Inspector or XcodeDer Accessibility Inspector las stattdessen den XCUITest-Elementbaum.

Der Befehl schreibt die Hierarchie ohne grafische Darstellung in eine XML-Datei auf dem Gerät. Er ist nützlich in Skripten und auf Systemen ohne grafische Benutzeroberfläche, allerdings geht die Screenshot-Überlagerung verloren, die das schnelle Auffinden des richtigen Knotens ermöglicht.

Maschinelles Lernen bei der Elementlokalisierung bewertet mehrere Attribute gemeinsam – Text, Klasse, Position und benachbarte Knoten – und ermittelt das Element neu, sobald sich eines dieser Attribute ändert. Dieses selbstheilende Verhalten reduziert Fehler, die durch eine geänderte ID verursacht werden.

Ja. Fügen Sie die Attributwerte in einen Kommentar ein. Copilot erstellt dann in der Regel das passende Seitenobjektfeld und die Klickmethode. Überprüfen Sie den generierten Locator immer anhand der Live-Ansicht, da es sich um einen Vorschlag und nicht um eine exakte Suche handelt.

Nein. Der Viewer arbeitet mit der auf dem Gerät installierten Version, daher kann auch eine nicht selbst kompilierte APK-Datei untersucht werden. Es werden nur Attribute angezeigt, die der Entwickler tatsächlich festgelegt hat, wie z. B. resource-id und content-desc.

Ja. Ein Emulator verhält sich gegenüber adb genau wie ein physisches Mobiltelefon, daher erfasst die Schaltfläche „Geräte-Screenshot“ die Daten auf dieselbe Weise. Emulatoren sind praktisch für frühe Skripting-Phasen, finale Tests sollten jedoch auf echter Hardware durchgeführt werden.

Es weist jedem Steuerelement eine stabile, sprachunabhängige Kennung zu, die gleichzeitig als Barrierefreiheits-ID in einem Skript und als Bezeichnung für die Bildschirmlesefunktion dient. Durch dieselbe einzeilige Änderung verbessern sich Testzuverlässigkeit und Barrierefreiheit.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: