UIAutomatorViewer Opplæring: Inspektør for Android Testing

⚡ Smart oppsummering

UIAutomatorViewer er en grafisk inspektør som følger med Android SDK som tar et skjermbilde av enheten, gjengir visningshierarkiet og eksponerer attributtene Appium må finne knapper, felt og etiketter pålitelig.

  • 🔘 Hva den gjør: Skanner en live Android skjerm og viser nodehierarkiet ved siden av et egenskapsark for det valgte elementet.
  • ☑️ Hvor den bor: Utskyteren sitter i Android SDK-verktøymappen som uiautomatorviewer.bat og starter en Java skrivebordsvinduet.
  • Opptaksflyt: Slå på utvikleralternativer, koble til håndsettet via USB, og trykk deretter på Enhetsskjermbilde for å laste inn gjeldende skjerm.
  • 🧪 Attributtkartping: tekst blir navn, ressurs-id blir id, klasse blir klassenavn og innholdsbeskrivelse blir tilgjengelighets-ID-en.
  • 🛠️ Feilsøking: Meldingen «Nei Android «enheter ble oppdaget av adb» peker nesten alltid på en kabel-, driver- eller feilsøkingsinnstilling.
  • 📊 Moderne alternativ: Appium Inspektør dekker Android og iOS, og er fortsatt tilgjengelig etter at den eldre SDK-verktøypakken ble pensjonert.

UIAutomatorViewer-inspektør for Android applikasjonstesting

Hva er UIAutomatorViewer?

UIAutomatorViewer er et grafisk brukergrensesnittverktøy for å skanne og analysere brukergrensesnittkomponentene til en Android applikasjon. For å automatisere enhver Android applikasjon ved bruk av Appium, må en bruker identifisere objektene i AUT (Application Under Test). Med UIAutomatorViewer kan du inspisere brukergrensesnittet til en Android applikasjon for å finne ut hierarkiet og se forskjellige egenskaper (id, tekst…) til elementet.

Mens du kjører automatiseringsskript, Appium bruker UIAutomatorViewer til å identifisere forskjellige egenskaper ved objektet og bruker egenskapene til å identifisere det nødvendige objektet. Den ene ideen – les attributtet i inspektøren, og bruk det deretter på nytt som en locator i skriptet – er det resten av denne siden går gjennom.

Skjermbildet nedenfor viser verktøyet i normal driftstilstand: skjermbildet for den innhentede enheten til venstre, nodetreet øverst til høyre og egenskapsarket for den valgte noden under det.

UIAutomatorViewer-vindu som viser skjermbildet for den innhentede enheten, nodehierarkitreet og nodedetaljpanelet

Forutsetninger for bruk av UIAutomatorViewer

Inspektøren leser live-skjermen til et ekte håndsett eller en emulator, så litt oppsett må være på plass før vinduet viser noe i det hele tatt.

  • A Java Utviklingssett: uiautomatorviewer er en Java skrivebordsapplikasjon startet av et batch-skript, så en JDK må være installert og tilgjengelig på systembanen.
  • Ocuco Android SDK: seeren leveres i SDK-en verktøy mappen, så SDK-en må installeres før oppstartsprogrammet finnes på disken.
  • Plattformverktøy og adb: seeren snakker til enheten gjennom Android Feilsøkingsbro, så ADB må være installert og kunne se håndsettet.
  • Utvikleralternativer og USB-feilsøking: begge må være slått på i enhetsinnstillingene, ellers lister adb aldri enheten.
  • En datakompatibel USB-kabel og driver: en ladekabel, eller en manglende produsentdriver på Windows, produserer en tom enhetsliste.
  • Applikasjonen som testes: Appen må installeres og åpnes på enheten, fordi inspektøren fanger opp det som er på skjermen.

Med disse seks elementene på plass, er nedlastingstrinnet kort.

Slik laster du ned og installerer UIAutomatorViewer

UIAutomatorViewer er en del av Android SDK-behandleren vil være tilgjengelig når du har installert SDK-behandleren. Last ned og installer Android SDK fra den offisielle Android Studio laste siden.

Når Android SDK er installert, naviger til denne banen:

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

Du vil legge merke til en batchfil med dette navnet:

uiautomatorviewer.bat

Double Klikk på den for å starte UIAutomatorViewer GUI. Mappelisten ser ut som den nedenfor, med batchfilen plassert ved siden av de andre SDK-verktøyene.

Android SDK-verktøymappen i Windows Utforsker som inneholder batch-starteren for uiautomatorviewer

⚠️ Versjonsmerknad: Androids egen UI Automator-dokumentasjon beskriver fortsatt hvordan man starter verktøyet fra /verktøy/, men den foreldede frittstående Android SDK-verktøy Pakken tilbys ikke lenger av SDK Manager i gjeldende Android Studio utgivelser. Installasjoner som har eksisteret lenge og eldre SDK-arkiver inneholder fortsatt oppstartsprogrammet; på en ny installasjon er filen vanligvis fraværende, og Appium Inspektør er den praktiske erstatningen. De originale trinnene ovenfor beholdes fordi de forblir korrekte for alle maskiner som fortsatt har verktøymappen.

Slik bruker du UIAutomatorViewer til å finne objekter i applikasjonen din

Opptakssekvensen er alltid den samme: klargjør enheten, plasser skjermen du bryr deg om foran kameraet, og ta deretter øyeblikksbildet.

  1. aktiver utviklermuligheter på enheten din. Les Androidveiledning for å konfigurere utvikleralternativer på enheten for å se hvordan du aktiverer utvikleralternativer på Android enheter.
  2. koble Android enheten til PC-en via en USB-kabel.
  3. Velg "Guru99”-appen fra applikasjonslisten, som vist nedenfor.

Guru99 applikasjoner valgt fra Android liste over enheters applikasjoner

  1. Klikk på Skjermbilde av enheten knappen for å oppdatere UIAutomatorViewer og for å laste inn Guru99-applikasjonens grafiske brukergrensesnitt i verktøyet. Knappen er plassert i verktøylinjen, uthevet nedenfor.

Knapp på verktøylinjen for enhetsskjermbilde som brukes til å oppdatere UIAutomatorViewer-opptaket

  1. Etter at oppdateringen er fullført, vises et skjermbilde av Guru99-applikasjonen åpnes i venstre rute.

Fanget Guru99-applikasjonsskjermbilde lastet inn i venstre rute i UIAutomatorViewer

  1. Som du ser i bildet ovenfor, er det 2 paneler på høyre side av vinduet.

Det øvre panelet inneholder nodehierarkiet – måten brukergrensesnittkomponentene er ordnet og inneholdt på. Ved å klikke på hver node får du egenskapene til det brukergrensesnittelementet i det nedre panelet.

  1. Velg «Quiz»-knappen i bildet ovenfor for å se de forskjellige egenskapene (tekst, ressurs-ID…).

Quiz-knappen er valgt i nodetreet med egenskapene oppført i det nedre detaljpanelet

Slik bruker du disse egenskapene til å identifisere elementer for automatisering

Vel, du kan ikke bruke egenskapene direkte – hver egenskap har et annet navn i automatiserings-API-et. La oss se hvordan vi bruker disse egenskapsverdiene. Følgende attributter kan brukes til å identifisere «Quiz»-knappen i Guru99 applikasjoner.

Attributt i UIAutomatorViewer Lokatornavn i skriptet Typisk bruk
tekst navn Synlig etikett på en knapp eller et statisk felt
ressurs-id id Det mest stabile valget når utvikleren setter et
klasse klassenavn Velge en gruppe med widgeter av samme type
innhold-desc tilgjengelighets-ID Plattformsøker som også hjelper skjermlesere

Hvert kartping er synlig direkte i nodedetaljpanelet. tekst Attributtet kan brukes som «navn», som egenskapsraden nedenfor viser.

Nodedetaljrad som viser tekstattributtverdien som brukes som navnesøker

Ocuco ressurs-id Attributtet kan brukes som «id».

Nodedetaljrad som viser ressurs-ID-attributtverdien som brukes som ID-lokalisering

Ocuco klasse Attributtet kan brukes som «klassenavn».

Nodedetaljrad som viser klasseattributtverdien som brukes som className-lokaliseringsverktøy

Ocuco innhold-desc Attributtet kan brukes som «Tilgjengelighets-ID».

Nodedetaljrad som viser content-desc-attributtverdien som brukes som tilgjengelighets-ID-lokalisering

Sammen med attributtene ovenfor kan vi skrive XPaths for objektidentifikasjon. Disse attributtnavnene er også det du sender gjennom. ønskede evner og lokaliseringsstrategier når skriptet kjører.

Slik bygger du XPath-lokaliseringsverktøy fra UIAutomatorViewer-attributter

XPath er reservefunksjonen når ingen enkeltattributter er unike i seg selv. Nodedetaljpanelet gir deg alle verdiene uttrykket trenger, så en XPath er egentlig bare attributtet du allerede har lest, skrevet i predikatform.

Arbeid deg gjennom panelet i denne rekkefølgen:

  1. Velg noden i det øvre panelet og les dens klasse, tekst, ressurs-id og innhold-desc verdier i det nedre panelet.
  2. Foretrekk et enkelt stabilt attributt. Hvis ressurs-ID er utfylt, bruk det og stopp – XPath er ikke nødvendig.
  3. Hvis ingenting er unikt, kombiner to attributter i ett predikat.
  4. Hvis etiketten endres under kjøretid, bytt likhetstesten for et delvis samsvar.

Mønstrene nedenfor bruker attributtnavnene nøyaktig slik 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']

Noen få regler hindrer disse uttrykkene i å bli sprø. Absolutte stier som går gjennom hele treet, brytes i det øyeblikket en utvikler pakker inn et oppsett i én container til, så start hvert uttrykk med dobbel skråstrek og match på et attributt i stedet. Indeksbaserte predikater oppfører seg på samme måte – de overlever til skjermen får en rad. Og et uttrykk som er unikt på en telefonskjerm kan matche flere noder på et nettbrettoppsett, så inspiser den samme skjermen på begge formfaktorene før du forfremmer lokatoren til en suite. Den samme disiplinen gjelder for XPath inn Selenium, der treet er en DOM snarere enn et visningshierarki.

Feil man kan støte på når man bruker UIAutomatorViewer

De fleste feil skjer før en enkelt node er tegnet, og nesten alle av dem kommer tilbake til forbindelsen mellom arbeidsstasjonen og håndsettet.

  • Jeg ser feilen – «Nei Android «enheter ble oppdaget av adb» – som vist på skjermbildet nedenfor. Hvordan kan jeg løse dette?

UIAutomatorViewer-dialogboksen rapporterer at nei Android enheter ble oppdaget av adb

Løsning: Sørg for at enheten din er koblet til PC-en.

Tabellen nedenfor utvider svaret til de andre meldingene testerne oftest møter.

Symptom Sannsynlig årsak Fix
Nei Android enheter ble oppdaget av adb Enhet ikke tilkoblet, USB-feilsøking av eller en kun-ladekabel Koble til igjen med en datakabel, aktiver USB-feilsøking, og bekreft deretter at håndsettet vises i ADB-enhetslisten
Enhet oppført som uautorisert RSA-fingeravtrykksforespørselen ble aldri akseptert på håndsettet Lås opp skjermen, koble til igjen og trykk på Tillat USB-feilsøking
uiautomatorviewer.bat mangler Den foreldede SDK-verktøypakken er ikke installert Bruk en eksisterende SDK-installasjon som fortsatt inneholder den, eller bytt til Appium Inspektør
Hierarkiet er tomt, eller innsamlingen mislykkes Skjermen endret seg under dumpingen, eller appen blokkerer skjermopptak Hold skjermen stille og ta et nytt skjermbilde; sikre skjermbilder kan ikke tas
WebView-innhold vises som én enkelt node Seeren leser bare native visninger Inspiser nettinnhold med verktøy for nettleserutviklere eller en inspektør som støtter nettkontekst

UIAutomatorViewer vs. Appium Inspektør vs. Layoutinspektør

Tre inspektører brukes ofte mot Android skjermer, og de løser litt forskjellige problemer.

Criterion UIAutomatorViewer Appium Inspektør Android Studio Layoutinspektør
Sendes med Arven Android SDK-verktøypakke Et frittstående skrivebordsprogram Android Studio
Plattformer inspisert Android bare Android og iOS Android bare
Trenger en fungerende server Nei, den snakker direkte med adb Ja, den kobles til en Appium serverøkt Nei, den er knyttet til en feilsøkbar prosess
Genererer lokasjonskode Nei, verdiene kopieres for hånd Ja, den foreslår lokatorer og kan registrere handlinger Nei, det er en feilsøkingsvisning
Passer best til Et raskt attributtsøk på et eldre oppsett Bygge og validere lokatorer for en suite Diagnostisering av layout- og gjengivelsesproblemer

For en suite som allerede går gjennom Appium, er Inspector den naturlige etterfølgeren: den leser de samme attributtene, kjører den samme UiAutomator2-driveren under, og fungerer også mot iOS. Appium Inspektørprosjekt frigis aktivt, så det er det tryggere valget for nytt arbeid, mens Layout Inspector forblir nyttig når spørsmålet er hvorfor en visning gjengis merkelig, snarere enn hvordan man skal håndtere det. Hvis du fortsatt velger en stakk, er den bredere sammenligningen i vår guide til testverktøy for mobilapper er et godt neste steg, og eksempler på mobile testtilfeller vis hva disse lokaliseringspunktene til slutt fører til.

Spørsmål og svar

Bare delvis. Leseren leser det opprinnelige visningshierarkiet, så en WebView vises vanligvis som én ugjennomsiktig node. Inspiser HTML-koden i den med verktøy for nettleserutviklere, eller bruk en inspektør som kan bytte til webkonteksten.

Nei. Verktøyet er bundet til Android Debug Bridge og Android vis hierarki. Bruk for iOS-skjermer Appium Inspektør or Xcodes tilgjengelighetsinspektør, som i stedet leste XCUITest-elementtreet.

Kommandoen skriver det samme hierarkiet til en XML-fil på enheten, uten grafikk. Den er nyttig i skript og på headless-maskiner, men du mister skjermbildeoverlegget som gjør det raskt å finne riktig node.

Maskinlæringslokaliseringsmotorer scorer flere attributter sammen – tekst, klasse, posisjon og nærliggende noder – og løser elementet på nytt når en av dem endres. Denne selvreparerende oppførselen reduserer feil forårsaket av en omdøpt ID.

Ja. Lim inn attributtverdiene i en kommentar, så vil Copilot vanligvis utarbeide det samsvarende side-objekt-feltet og klikkmetoden. Verifiser alltid den genererte locatoren mot live-skjermen, fordi forslaget er en gjetning, ikke et oppslag.

Nei. Visningsprogrammet fungerer mot den installerte versjonen på enheten, så en APK du ikke kompilerte kan fortsatt inspiseres. Bare attributter som utvikleren faktisk har satt, for eksempel ressurs-ID og innholdsbeskrivelse, vil bli fylt ut.

Ja. En emulator ser ut til å bruke ADB akkurat som et fysisk håndsett, så knappen for enhetsskjermbilde fanger det opp på samme måte. Emulatorer er praktiske for tidlig skripting, men de endelige kjøringene hører hjemme på ekte maskinvare.

Den gir hver kontroll et stabilt, språkuavhengig referansenummer som også fungerer som tilgjengelighets-ID i et skript og som etiketten en skjermleser annonserer. Testpålitelighet og tilgjengelighet forbedres fra den samme endringen på én linje.

Oppsummer dette innlegget med: