UIAutomatorViewer Tutorial: Inspektør for Android Test
⚡ Smart opsummering
UIAutomatorViewer er en grafisk inspektør, der følger med Android SDK, der tager et skærmbillede af enheden, gengiver visningshierarkiet og eksponerer attributterne Appium skal kunne lokalisere knapper, felter og etiketter pålideligt.
Hvad er UIAutomatorViewer?
UIAutomatorViewer er et GUI-værktøj til at scanne og analysere UI-komponenterne i en Android applikation. For at automatisere enhver Android applikation ved hjælp af Appium, skal en bruger identificere objekterne i AUT (Application Under Test). Med UIAutomatorViewer kan du inspicere brugergrænsefladen for en Android applikation til at finde hierarkiet og se forskellige egenskaber (id, tekst…) for elementet.
Mens du udfører automatiseringsscripts, Appium bruger UIAutomatorViewer til at identificere forskellige egenskaber ved objektet og bruger egenskaberne til at identificere det ønskede objekt. Den ene idé – at læse attributten i inspektøren og derefter genbruge den som en locator i scriptet – er det, resten af denne side gennemgår.
Skærmbilledet nedenfor viser værktøjet i dets normale driftstilstand: skærmbilledet for den optagne enhed til venstre, nodetræet øverst til højre og egenskabsarket for den valgte node nedenunder.
Forudsætninger for brug af UIAutomatorViewer
Inspektøren læser liveskærmen på et rigtigt håndsæt eller en emulator, så en lille smule opsætning skal være på plads, før vinduet overhovedet viser noget.
- A Java Udviklingssæt: uiautomatorviewer er en Java desktop-applikation startet af et batchscript, så en JDK skal være installeret og tilgængelig på systemstien.
- Android SDK'er: seeren leveres inden for SDK'et værktøjer mappe, så SDK'et skal installeres, før launcheren findes på disken.
- Platformværktøjer og adb: seeren taler til enheden via Android Debug Bridge, så adb skal være installeret og kunne se håndsættet.
- Udviklerindstillinger og USB-fejlfinding: begge skal være aktiveret i enhedsindstillingerne, ellers viser adb aldrig enheden.
- Et data-kompatibelt USB-kabel og driver: et opladningskabel eller en manglende producentdriver på Windows, producerer en tom enhedsliste.
- Applikationen under test: Appen skal installeres og åbnes på enheden, fordi inspektøren optager det, der aktuelt er på skærmen.
Med disse seks elementer på plads er downloadtrinnet kort.
Sådan downloader og installerer du UIAutomatorViewer
UIAutomatorViewer er en del af Android SDK-administratoren vil være tilgængelig, når du har installeret SDK-administratoren. Download og installer Android SDK fra den officielle Android Studio download siden.
Når Android SDK'et er installeret, skal du navigere til denne sti:
c:\users\<username>\AppData\Local\Android\sdk\tools
Du vil se en batchfil med dette navn:
uiautomatorviewer.bat
Double Klik på den for at starte UIAutomatorViewer GUI. Mappelisten ser ud som den nedenfor, hvor batchfilen ligger ved siden af de andre SDK-værktøjer.
⚠️ Versionsnotat: Android's egen UI Automator-dokumentation beskriver stadig, hvordan man starter værktøjet fra /værktøjer/, men den forældede selvstændige Android SDK-værktøjer Pakken tilbydes ikke længere af SDK Manager i den nuværende Android Studio udgivelser. Langvarige installationer og ældre SDK-arkiver indeholder stadig launcheren; på en ny installation er filen normalt fraværende, og Appium Inspector er den praktiske erstatning. De originale trin ovenfor bevares, fordi de forbliver korrekte for enhver maskine, der stadig har værktøjsmappen.
Sådan bruger du UIAutomatorViewer til at finde objekter i din applikation
Optagelsessekvensen er altid den samme: klargør enheden, placer den skærm, du er interesseret i, foran kameraet, og tag derefter snapshottet.
- Aktiver udvikler muligheder på din enhed. Læs Android's vejledning til konfiguration af udviklerindstillinger på enheden for at se, hvordan man aktiverer udviklerindstillinger Android enheder.
- Tilslut din Android enheden til pc'en via et USB-kabel.
- Vælg "Guru99"-appen fra programlisten, som vist nedenfor.
- Klik på knappen Skærmbillede af enheden knappen for at opdatere UIAutomatorViewer og indlæse Guru99 applikationens GUI i værktøjet. Knappen er placeret i værktøjslinjen, der er fremhævet nedenfor.
- Når opdateringen er fuldført, vises et skærmbillede af Guru99-applikationen åbnes i venstre rude.
- Som du ser på billedet ovenfor, er der 2 paneler i højre side af vinduet.
Det øverste panel indeholder nodehierarkiet – den måde, brugergrænsefladekomponenterne er arrangeret og indeholdt på. Ved at klikke på hver node vises egenskaberne for det pågældende brugergrænsefladeelement i det nederste panel.
- Vælg knappen 'Quiz' i billedet ovenfor for at se dens forskellige egenskaber (tekst, ressource-id...).
Sådan bruger du disse egenskaber til at identificere elementer til automatisering
Du kan ikke bruge egenskaberne direkte – hver egenskab har et andet navn i automatiserings-API'en. Lad os se, hvordan vi bruger disse egenskabsværdier. Følgende attributter kan bruges til at identificere knappen 'Quiz' i Guru99 applikationer.
| Attribut i UIAutomatorViewer | Lokaliseringsnavn i scriptet | Typisk brug |
|---|---|---|
| tekst | navn | Synlig etiket på en knap eller et statisk felt |
| ressource-id | id | Det mest stabile valg, når udvikleren sætter et |
| klasse | klassenavn | Valg af en gruppe widgets af samme type |
| indhold-desc | tilgængeligheds-id | Cross-platform locator, der også hjælper skærmlæsere |
Hvert kortping er synlig direkte i nodedetaljepanelet. tekst Attributten kan bruges som "navn", som egenskabsrækken nedenfor viser.
ressource-id Attributten kan bruges som "id".
klasse Attributten kan bruges som "className".
indhold-desc Attributten kan bruges som "AcceptabilityId".
Sammen med ovenstående attributter kan vi skrive XPaths til objektidentifikation. Disse attributnavne er også det, du sender igennem. ønskede evner og lokaliseringsstrategier, når scriptet kører.
Sådan bygger du XPath-lokaliseringsværktøjer fra UIAutomatorViewer-attributter
XPath er reservefunktionen, når ingen enkelt attribut er unik i sig selv. Nodedetaljeringspanelet giver dig alle de værdier, udtrykket har brug for, så en XPath er egentlig bare den attribut, du allerede har læst, skrevet i prædikatform.
Arbejd dig igennem panelet i denne rækkefølge:
- Vælg noden i det øverste panel og læs dens klasse, tekst, ressource-id og indhold-desc værdier i det nederste panel.
- Foretræk en enkelt stabil attribut. Hvis resource-id er udfyldt, brug det og stop - XPath er ikke nødvendig.
- Hvis intet er unikt, kombiner to attributter i ét prædikat.
- Hvis etiketten ændres under kørsel, skal du skifte lighedstesten til et delvist match.
Mønstrene nedenfor bruger attributnavnene præcis som UIAutomatorViewer rapporterer 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']
Et par regler forhindrer disse udtryk i at blive skrøbelige. Absolutte stier, der går gennem hele træet, brydes i det øjeblik, en udvikler pakker et layout ind i endnu en container, så start hvert udtryk med den dobbelte skråstreg og match i stedet på en attribut. Indeksbaserede prædikater opfører sig på samme måde - de overlever, indtil skærmen får en række. Og et udtryk, der er unikt på en telefonskærm, kan matche flere noder på et tabletlayout, så undersøg den samme skærm igen på begge formfaktorer, før du promoverer locatoren til en suite. Den samme disciplin gælder for XPath ind Selenium, hvor træet er en DOM snarere end et visningshierarki.
Fejl man kan støde på under brug af UIAutomatorViewer
De fleste fejl sker, før en enkelt node er tegnet, og næsten alle af dem handler om forbindelsen mellem arbejdsstationen og håndsættet.
- Jeg ser fejlen — "Nej Android "Enheder blev registreret af adb" — som vist på skærmbilledet nedenfor. Hvordan kan jeg løse dette?
Opløsning: Sørg for, at din enhed er tilsluttet pc'en.
Tabellen nedenfor udvider dette svar til de andre meddelelser, som testerne oftest rammer.
| Symptom | Sandsynlig årsag | Fix |
|---|---|---|
| Ingen Android enheder blev registreret af adb | Enhed ikke tilsluttet, USB-fejlfinding slået fra eller et kabel kun til opladning | Genopret forbindelse med et datakabel, aktiver USB-fejlfinding, og bekræft derefter, at håndsættet vises på ADB-enhedslisten |
| Enhed angivet som uautoriseret | RSA-fingeraftryksprompten blev aldrig accepteret på håndsættet | Lås skærmen op, tilslut igen, og tryk på Tillad USB-fejlfinding |
| uiautomatorviewer.bat mangler | Den forældede SDK-værktøjspakke er ikke installeret | Brug en eksisterende SDK-installation, der stadig indeholder den, eller skift til Appium Inspector |
| Hierarkiet er tomt, eller optagelsen mislykkes | Skærmen ændrede sig under dumpen, eller appen blokerer skærmoptagelsen | Hold skærmen stille, og tag et nyt snapshot; sikre skærmbilleder kan ikke optages |
| WebView-indhold vises som en enkelt node | Seeren læser kun native visninger | Undersøg webindhold med browserudviklerværktøjer eller en inspektør, der understøtter webkontekst |
UIAutomatorViewer vs. Appium Inspektør vs. Layoutinspektør
Tre inspektører bruges almindeligvis imod Android skærme, og de løser lidt forskellige problemer.
| Kriterium | UIAutomatorViewer | Appium Inspector | Android Studio Layoutinspektør |
|---|---|---|---|
| Sendes med | Arven Android SDK-værktøjspakke | En selvstændig desktopapplikation | Android Studio |
| Inspicerede platforme | Android kun | Android og iOS | Android kun |
| Kræver en kørende server | Nej, den taler direkte til adb | Ja, den forbinder sig til en Appium serversession | Nej, den er knyttet til en fejlfindingsproces |
| Genererer lokaliseringskode | Nej, værdierne kopieres manuelt | Ja, den foreslår lokatorer og kan registrere handlinger | Nej, det er en fejlfindingsvisning |
| Bedst egnet til | En hurtig attributopslag på en ældre opsætning | Opbygning og validering af lokaliseringspunkter for en suite | Diagnosticering af layout- og renderingsproblemer |
For en suite, der allerede løber igennem Appium, er Inspector den naturlige efterfølger: den læser de samme attributter, kører den samme UiAutomator2-driver nedenunder og fungerer også mod iOS. Appium Inspektørprojekt frigives aktivt, så det er det sikrere valg til nyt arbejde, mens Layout Inspector forbliver nyttig, når spørgsmålet er, hvorfor en visning gengives mærkeligt, snarere end hvordan man skal håndtere det. Hvis du stadig vælger en stak, er den bredere sammenligning i vores guide til værktøjer til test af mobilapps er et godt næste skridt, og eksempler på mobile testcases vis, hvad disse lokaliseringspunkter i sidste ende fører til.







