UIAutomatorViewer Handledning: Inspektör för Android Testning
⚡ Smart sammanfattning
UIAutomatorViewer är en grafisk inspektör som ingår i Android SDK som tar en skärmdump av enheten, renderar vyhierarkin och exponerar attributen Appium behöver lokalisera knappar, fält och etiketter tillförlitligt.
Vad är UIAutomatorViewer?
UIAutomatorViewer är ett grafiskt gränssnittsverktyg för att skanna och analysera gränssnittskomponenterna i en Android applikation. För att automatisera alla Android applikation med Appium, behöver en användare identifiera objekten i AUT (Application Under Test). Med UIAutomatorViewer kan du inspektera användargränssnittet för en Android applikation för att ta reda på hierarkin och visa olika egenskaper (id, text…) för elementet.
När du kör automatiseringsskript, Appium använder UIAutomatorViewer för att identifiera olika egenskaper hos objektet och använder egenskaperna för att identifiera det önskade objektet. Den enda idén – att läsa attributet i inspektören och sedan återanvända det som en positionerare i skriptet – är vad resten av den här sidan går igenom.
Skärmdumpen nedan visar verktyget i normalt arbetsläge: skärmen för den hämtade enheten till vänster, nodträdet uppe till höger och egenskapssidan för den valda noden under det.
Förutsättningar för att använda UIAutomatorViewer
Inspektören läser av liveskärmen på en riktig handenhet eller emulator, så en liten mängd inställningar måste vara på plats innan fönstret visar någonting alls.
- A Java Utvecklingskit: uiautomatorviewer är en Java skrivbordsapplikationen startades av ett batchskript, så en JDK måste vara installerad och nåbar på systemsökvägen.
- Ocuco-landskapet Android SDK: tittaren levereras inuti SDK:n verktyg mappen, så SDK:t måste installeras innan startprogrammet finns på disken.
- Plattformverktyg och adb: tittaren pratar med enheten via Android Felsökningsbrygga, så adb måste vara installerad och kunna se handenheten.
- Utvecklaralternativ och USB-felsökning: båda måste vara aktiverade i enhetsinställningarna, annars listar adb aldrig enheten.
- En datakapabel USB-kabel och drivrutin: en laddningskabel eller en saknad drivrutin från tillverkaren Windows, producerar en tom enhetslista.
- Applikationen som testas: Appen måste installeras och öppnas på enheten, eftersom inspektören fångar det som för närvarande visas på skärmen.
Med de sex punkterna på plats är nedladdningssteget kort.
Hur man laddar ner och installerar UIAutomatorViewer
UIAutomatorViewer är en del av Android SDK-hanteraren och kommer att vara tillgänglig när du har installerat SDK-hanteraren. Ladda ner och installera Android SDK från den officiella Android Studio ladda sidan.
När Android SDK är installerat, navigera till den här sökvägen:
c:\users\<username>\AppData\Local\Android\sdk\tools
Du kommer att se en batchfil med detta namn:
uiautomatorviewer.bat
Double Klicka på den för att starta UIAutomatorViewer GUI. Mapplistan ser ut som den nedan, med batchfilen bredvid de andra SDK-verktygen.
⚠️ Versionsnotering: Androids egen UI Automator-dokumentation beskriver fortfarande hur man startar verktyget från /verktyg/, men den föråldrade fristående Android SDK-verktyg paketet erbjuds inte längre av SDK Manager i nuvarande Android Studio utgåvor. Långvariga installationer och äldre SDK-arkiv innehåller fortfarande startprogrammet; på en ny installation saknas filen vanligtvis, och Appium Inspector är den praktiska ersättningen. De ursprungliga stegen ovan behålls eftersom de förblir korrekta för alla maskiner som fortfarande har verktygsmappen.
Hur man använder UIAutomatorViewer för att hitta objekt i din applikation
Bildtagningssekvensen är alltid densamma: förbered enheten, placera skärmen du bryr dig om framför kameran och ta sedan ögonblicksbilden.
- Möjliggöra utvecklingsalternativ på din enhet. Läs Androids guide för att konfigurera utvecklaralternativ på enheten för att se hur man aktiverar utvecklaralternativ på Android enheter.
- Anslut Android enheten till datorn via en USB-kabel.
- Välj "Guru99”-appen från programlistan, som visas nedan.
- Klicka på Skärmdump av enheten knappen för att uppdatera UIAutomatorViewer och för att ladda Guru99-applikationens grafiska gränssnitt i verktyget. Knappen finns i verktygsfältet markerat nedan.
- När uppdateringen är klar visas en skärmdump av Guru99-applikationen öppnas i den vänstra rutan.
- Som du ser i bilden ovan finns det två paneler på höger sida av fönstret.
Den övre panelen innehåller nodhierarkin – hur UI-komponenterna är ordnade och inneslutna. Genom att klicka på varje nod visas egenskaperna för det UI-elementet i den nedre panelen.
- Välj knappen "Quiz" i bilden ovan för att se dess olika egenskaper (text, resurs-id...).
Hur man använder dessa egenskaper för att identifiera element för automatisering
Du kan inte använda egenskaperna direkt – varje egenskap har ett annat namn i automatiserings-API:et. Låt oss se hur man använder dessa egenskapsvärden. Följande attribut kan användas för att identifiera knappen "Quiz" i Guru99 appar.
| Attribut i UIAutomatorViewer | Lokaliseringsnamn i skriptet | Typisk användning |
|---|---|---|
| text | namn | Synlig etikett på en knapp eller ett statiskt fält |
| resurs-id | id | Det mest stabila valet när utvecklaren sätter ett |
| klass | classname | Välja en grupp widgetar av samma typ |
| innehåll-desc | tillgänglighets-ID | Plattformsoberoende sökare som även hjälper skärmläsare |
Varje kartaping syns direkt i nodens detaljpanel. Den text attributet kan användas som "namn", vilket egenskapsraden nedan visar.
Ocuco-landskapet resurs-id Attributet kan användas som "id".
Ocuco-landskapet klass Attributet kan användas som "className".
Ocuco-landskapet innehåll-desc Attributet kan användas som ”AccessibilityId”.
Tillsammans med ovanstående attribut kan vi skriva XPaths för objektidentifiering. Dessa attributnamn är också vad du skickar igenom. önskade förmågor och lokaliseringsstrategier när skriptet körs.
Hur man bygger XPath-lokaliseringar från UIAutomatorViewer-attribut
XPath är reservfunktionen när inget enskilt attribut är unikt i sig. Nodens detaljpanel ger dig alla värden som uttrycket behöver, så ett XPath är egentligen bara det attribut du redan läst, skrivet i predikatform.
Arbeta igenom panelen i denna ordning:
- Markera noden i den övre panelen och läs dess klass, text, resurs-id och innehåll-desc värdena i den nedre panelen.
- Föredra ett enda stabilt attribut. Om resurs-id är ifyllt, använd det och stoppa — ingen XPath behövs.
- Om inget är unikt, kombinera två attribut i ett predikat.
- Om etiketten ändras under körning, byt likhetstestet mot en partiell matchning.
Mönstren nedan använder attributnamnen exakt så som UIAutomatorViewer rapporterar dem.
<!-- 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']
Några regler hindrar dessa uttryck från att bli sköra. Absoluta sökvägar som går genom hela trädet bryts i det ögonblick en utvecklare lägger in en layout i ytterligare en container, så börja varje uttryck med det dubbla snedstrecket och matcha på ett attribut istället. Indexbaserade predikat beter sig på samma sätt – de överlever tills skärmen får en rad. Och ett uttryck som är unikt på en telefonskärm kan matcha flera noder på en surfplattelayout, så inspektera samma skärm på båda formfaktorerna innan du flyttar upp lokaliseringen till en svit. Samma disciplin gäller för XPath in Selenium, där trädet är en DOM snarare än en vyhierarki.
Fel man kan stöta på när man använder UIAutomatorViewer
De flesta fel inträffar innan en enda nod har ritats, och nästan alla av dem beror på anslutningen mellan arbetsstationen och handenheten.
- Jag ser felet — ”Nej Android enheter upptäcktes av adb” — som visas på skärmdumpen nedan. Hur kan jag lösa detta?
Lösning: Se till att din enhet är ansluten till datorn.
Tabellen nedan utökar det svaret till de andra meddelanden som testarna oftast träffar.
| Symptom | Trolig orsak | Fast |
|---|---|---|
| Nej Android enheter upptäcktes av adb | Enheten är inte ansluten, USB-felsökning avstängd eller en laddningskabel | Återanslut med en datakabel, aktivera USB-felsökning och bekräfta sedan att handenheten visas i ADB-enhetslistan. |
| Enhet listad som obehörig | RSA-fingeravtrycksfrågan accepterades aldrig på handenheten | Lås upp skärmen, anslut igen och tryck på Tillåt USB-felsökning |
| uiautomatorviewer.bat saknas | Det föråldrade SDK-verktygspaketet är inte installerat | Använd en befintlig SDK-installation som fortfarande innehåller den, eller byt till Appium Inspector |
| Hierarkin är tom eller så misslyckas inspelningen | Skärmen ändrades under dumpningen, eller så blockerar appen skärmdumpen | Håll skärmen stilla och ta en ny ögonblicksbild; säkra skärmar kan inte tas |
| WebView-innehåll visas som en enda nod | Läsaren läser endast inbyggda vyer | Granska webbinnehåll med webbläsarutvecklingsverktyg eller en inspektör som stöder webbkontext |
UIAutomatorViewer vs. Appium Inspektör vs. Layoutinspektör
Tre inspektörer används vanligtvis mot Android skärmar, och de löser lite olika problem.
| Kriterium | UIAutomatorViewer | Appium Inspector | Android Studio Layoutinspektör |
|---|---|---|---|
| Skickas med | Arvet Android SDK-verktygspaket | En fristående skrivbordsapplikation | Android Studio |
| Plattformar inspekterade | Android endast | Android och iOS | Android endast |
| Behöver en fungerande server | Nej, den kommunicerar direkt med adb | Ja, den ansluter till en Appium serversession | Nej, den är kopplad till en felsökningsbar process |
| Genererar lokaliseringskod | Nej, värdena kopieras för hand | Ja, den föreslår positionerare och kan registrera handlingar | Nej, det är en felsökningsvy |
| Passar bäst till | En snabb attributsökning på en äldre installation | Bygga och validera lokaliseringsverktyg för en svit | Diagnostisera layout- och renderingsproblem |
För en svit som redan går igenom Appium, är Inspector den naturliga efterföljaren: den läser samma attribut, kör samma UiAutomator2-drivrutin under och fungerar även mot iOS. Appium Inspektörsprojekt släpps aktivt, så det är det säkrare valet för nytt arbete, medan Layout Inspector förblir användbar när frågan är varför en vy renderas konstigt snarare än hur man ska åtgärda det. Om du fortfarande väljer en stack, den bredare jämförelsen i vår guide till testverktyg för mobilappar är ett bra nästa steg, och exempel på mobila testfall visa vad dessa lokaliseringsenheter så småningom matar in.







