UIAutomatorViewer-zelfstudie: Inspector voor Android Testen
⚡ Slimme samenvatting
UIAutomatorViewer is een grafische inspectietool die is meegeleverd met de Android SDK die een schermafbeelding van een apparaat maakt, de weergavehiërarchie weergeeft en de attributen beschikbaar maakt. Appium Het is noodzakelijk om knoppen, velden en labels betrouwbaar te kunnen lokaliseren.
Wat is UIAutomatorViewer?
UIAutomatorViewer is een GUI-tool om de UI-componenten van een te scannen en analyseren. Android applicatie. Om alles te automatiseren Android toepassing met behulp van AppiumEen gebruiker moet de objecten in de AUT (Application Under Test) kunnen identificeren. Met UIAutomatorViewer kunt u de gebruikersinterface van een applicatie inspecteren. Android Applicatie om de hiërarchie te achterhalen en verschillende eigenschappen (id, tekst, enz.) van een element te bekijken.
Tijdens het uitvoeren van automatiseringsscripts, Appium Het maakt gebruik van UIAutomatorViewer om verschillende eigenschappen van het object te identificeren en deze eigenschappen vervolgens te gebruiken om het gewenste object te vinden. Dat ene idee – het attribuut in de inspector uitlezen en het vervolgens hergebruiken als locator in het script – vormt de basis van de rest van deze pagina.
De onderstaande schermafbeelding toont de tool in de normale werkmodus: het vastgelegde scherm van het apparaat aan de linkerkant, de knooppuntstructuur rechtsboven en daaronder het eigenschappenvenster voor het geselecteerde knooppunt.
Voorwaarden voor het gebruik van UIAutomatorViewer
De inspecteur leest het live scherm van een echt toestel of een emulator, dus er is een kleine voorbereiding nodig voordat er überhaupt iets in het venster verschijnt.
- A Java Ontwikkelingskit: uiautomatorviewer is een Java De desktopapplicatie wordt gestart door een batchscript, dus er moet een JDK geïnstalleerd zijn en bereikbaar zijn via het systeempad.
- De Android SDK: De viewer wordt meegeleverd in de SDK. tools map, dus de SDK moet geïnstalleerd zijn voordat de launcher op de schijf aanwezig is.
- Platformtools en adb: De kijker communiceert met het apparaat via de Android Debug Bridge, dus adb moet geïnstalleerd zijn en het toestel kunnen detecteren.
- Ontwikkelaarsopties en USB-debugging: Beide functies moeten ingeschakeld zijn in de apparaatinstellingen, anders wordt het apparaat nooit door adb weergegeven.
- Een USB-kabel met dataverbinding en de bijbehorende driver: een kabel die alleen geschikt is om op te laden, of een ontbrekende driver van de fabrikant. Windows, levert een lege apparatenlijst op.
- De te testen applicatie: De app moet op het apparaat geïnstalleerd en geopend zijn, omdat de inspecteur alles vastlegt wat er op dat moment op het scherm te zien is.
Met die zes items op hun plaats is de downloadstap zo gepiept.
Hoe UIAutomatorViewer te downloaden en te installeren
UIAutomatorViewer maakt deel uit van de Android De SDK-manager is toegankelijk zodra u deze installeert. Download en installeer de SDK-manager. Android SDK van de officiële Android Studio download pagina.
Wanneer de Android De SDK is geïnstalleerd, ga naar dit pad:
c:\users\<username>\AppData\Local\Android\sdk\tools
U zult een batchbestand met deze naam aantreffen:
uiautomatorviewer.bat
Double Klik erop om de UIAutomatorViewer GUI te starten. De mapstructuur ziet eruit zoals hieronder, met het batchbestand naast de andere SDK-tools.
⚠️ Versie-opmerking: AndroidDe eigen UI Automator-documentatie beschrijft nog steeds hoe je de tool kunt starten vanuit /hulpmiddelen/maar de verouderde zelfstandige Android SDK-hulpprogramma's Dit pakket wordt niet langer aangeboden door de SDK Manager in de huidige versie. Android Studio releases. Langdurige installaties en oudere SDK-archieven bevatten de launcher nog steeds; bij een nieuwe installatie ontbreekt het bestand meestal. Appium Inspector is de praktische vervanging. De oorspronkelijke stappen hierboven zijn behouden omdat ze nog steeds correct zijn voor elke machine die de gereedschapsmap nog heeft.
Hoe u UIAutomatorViewer kunt gebruiken om objecten in uw applicatie te vinden
De opnameprocedure is altijd hetzelfde: bereid het apparaat voor, plaats het scherm dat u wilt vastleggen voor de camera en maak vervolgens de foto.
- Enable ontwikkelaar opties op uw apparaat. Lees Androidhandleiding voor het configureren van ontwikkelaarsopties op het apparaat om te zien hoe je ontwikkelaarsopties inschakelt op Android toestellen.
- Koppel jouw Android Het apparaat wordt via een USB-kabel op de pc aangesloten.
- Selecteer de optie "GuruSelecteer app 99 uit de lijst met applicaties, zoals hieronder weergegeven.
- Klik op de Schermafbeelding van het apparaat knop om UIAutomatorViewer te vernieuwen en te laden Guru99 applicatie-GUI in de tool. De knop bevindt zich in de onderstaande werkbalk.
- Nadat de vernieuwing is voltooid, wordt een schermafbeelding van de GuruDe 99-applicatie wordt in het linkerpaneel geopend.
- Zoals je in de bovenstaande afbeelding ziet, bevinden zich aan de rechterkant van het venster 2 panelen.
Het bovenste paneel toont de knooppunthiërarchie – de manier waarop de UI-componenten zijn gerangschikt en gegroepeerd. Door op een knooppunt te klikken, worden de eigenschappen van dat UI-element in het onderste paneel weergegeven.
- Selecteer de knop 'Quiz' in de bovenstaande afbeelding om de verschillende eigenschappen ervan te bekijken (tekst, resource-id, enz.).
Hoe u deze eigenschappen kunt gebruiken om elementen voor automatisering te identificeren
Je kunt de eigenschappen niet rechtstreeks gebruiken; elke eigenschap heeft een andere naam in de automatiserings-API. Laten we eens kijken hoe we die eigenschapswaarden kunnen gebruiken. De volgende attributen kunnen worden gebruikt om de 'Quiz'-knop te identificeren in de Guru99 app.
| Attribuut in UIAutomatorViewer | Locatornaam in het script | Typisch gebruik |
|---|---|---|
| tekst | naam | Zichtbaar label op een knop of een statisch veld |
| resource-id | id | De meest stabiele keuze wanneer de ontwikkelaar er een instelt. |
| klasse | naam van de klasse | Een groep widgets van hetzelfde type selecteren |
| inhoud-besch | toegankelijkheids-ID | Een platformonafhankelijke locator die ook schermlezers helpt. |
Elke kaartping is direct zichtbaar in het detailvenster van het knooppunt. tekst Het attribuut kan als "naam" worden gebruikt, zoals de onderstaande eigenschapsregel laat zien.
De resource-id Het attribuut kan als "id" worden gebruikt.
De klasse Het attribuut kan worden gebruikt als "className".
De inhoud-besch Het attribuut kan worden gebruikt als "AccessibilityId".
Naast de bovenstaande attributen kunnen we XPath-expressies gebruiken voor objectidentificatie. Die attribuutnamen worden ook doorgegeven. gewenste mogelijkheden en lokalisatiestrategieën zodra het script draait.
Hoe maak je XPath-locators van UIAutomatorViewer-attributen?
XPath is het alternatief wanneer geen enkel attribuut op zichzelf uniek is. Het detailvenster van het knooppunt geeft je alle waarden die de expressie nodig heeft, dus een XPath is in feite gewoon het attribuut dat je al hebt gelezen, maar dan in predicaatvorm.
Doorloop het paneel in deze volgorde:
- Selecteer het knooppunt in het bovenste paneel en lees de bijbehorende informatie. klasse, tekst, resource-id en inhoud-besch waarden in het onderste paneel.
- Geef de voorkeur aan één stabiel attribuut. Als de resource-id is ingevuld, gebruik deze dan en stop — er is geen XPath nodig.
- Als niets uniek is, combineer dan twee attributen in één predicaat.
- Als het label tijdens de uitvoering verandert, schakel dan over op een gelijkheidstest voor een gedeeltelijke overeenkomst.
De onderstaande patronen gebruiken de attribuutnamen exact zoals UIAutomatorViewer ze weergeeft.
<!-- 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']
Een paar regels voorkomen dat deze expressies kwetsbaar worden. Absolute paden die de hele boom doorlopen, breken zodra een ontwikkelaar een lay-out in een extra container plaatst. Begin daarom elke expressie met een dubbele schuine streep en match in plaats daarvan op een attribuut. Indexgebaseerde predicaten gedragen zich op dezelfde manier: ze blijven geldig totdat het scherm een rij erbij krijgt. En een expressie die uniek is op een telefoonscherm, kan overeenkomen met meerdere knooppunten op een tabletlay-out. Controleer daarom hetzelfde scherm opnieuw op beide formfactoren voordat u de locator in een suite opneemt. Dezelfde discipline geldt voor XPath in Seleniumwaarbij de boom een DOM is in plaats van een weergavehiërarchie.
Mogelijke fouten die je kunt tegenkomen tijdens het gebruik van UIAutomatorViewer
De meeste storingen treden op voordat er ook maar één knooppunt getekend is, en bijna alle storingen zijn terug te voeren op de verbinding tussen het werkstation en het toestel.
- Ik zie de fout — “Nee Android "Apparaten werden gedetecteerd door adb" — zoals te zien is in de onderstaande schermafbeelding. Hoe kan ik dit oplossen?
Oplossing: Zorg ervoor dat uw apparaat is aangesloten op de pc.
De tabel hieronder geeft een overzicht van de andere berichten die testers het vaakst tegenkomen.
| Symptoom | waarschijnlijke oorzaak | Bepalen |
|---|---|---|
| Nee Android apparaten werden gedetecteerd door adb | Apparaat niet aangesloten, USB-debugging uitgeschakeld of een kabel die alleen voor opladen is bedoeld. | Maak opnieuw verbinding met een datakabel, schakel USB-debugging in en controleer vervolgens of het toestel in de adb-apparaatlijst verschijnt. |
| Apparaat vermeld als niet-geautoriseerd | De RSA-vingerafdrukprompt werd nooit geaccepteerd op het toestel. | Ontgrendel het scherm, maak opnieuw verbinding en tik op 'USB-foutopsporing toestaan'. |
| uiautomatorviewer.bat ontbreekt | Het verouderde SDK-toolspakket is niet geïnstalleerd. | Gebruik een bestaande SDK-installatie die deze nog bevat, of schakel over naar Appium Inspecteur |
| De hiërarchie is leeg of de vastlegging mislukt. | Het scherm is tijdens het dumpen veranderd, of de app blokkeert schermopnamen. | Houd het scherm stil en maak opnieuw een schermafbeelding; beveiligde schermen kunnen niet worden vastgelegd. |
| De inhoud van een WebView wordt weergegeven als één enkel knooppunt. | De kijker leest alleen de oorspronkelijke standpunten. | Inspecteer webinhoud met de ontwikkelaarstools van de browser of een inspectieprogramma dat webcontext ondersteunt. |
UIAutomatorViewer versus Appium Inspecteur versus lay-outinspecteur
Er worden doorgaans drie inspecteurs ingezet tegen Android schermen, en ze lossen iets andere problemen op.
| Criterium | UIAutomatorViewer | Appium Inspecteur | Android Studio Lay-outinspecteur |
|---|---|---|---|
| Wordt verzonden met | De nalatenschap Android SDK-toolspakket | Een zelfstandige desktopapplicatie | Android Studio |
| Geïnspecteerde platforms | Android Slechts | Android en iOS | Android Slechts |
| Vereist een werkende server. | Nee, het communiceert rechtstreeks met adb. | Ja, het is verbonden met een Appium serversessie | Nee, het wordt gekoppeld aan een debugbaar proces. |
| Genereert een locatiecode | Nee, de waarden worden handmatig gekopieerd. | Ja, het suggereert locaties en kan acties vastleggen. | Nee, het is een debugweergave. |
| Het meest geschikt voor: | Een snelle attribuutopzoeking in een oudere configuratie | Het bouwen en valideren van locatiegegevens voor een suite. | Diagnose van lay-out- en weergaveproblemen |
Voor een suite die al doorloopt AppiumDe Inspector is de natuurlijke opvolger: hij leest dezelfde attributen, gebruikt dezelfde UiAutomator2-driver en werkt ook met iOS. Appium Inspectieproject wordt actief uitgebracht, dus het is de veiligere keuze voor nieuw werk, terwijl Layout Inspector nuttig blijft wanneer de vraag is waarom een weergave vreemd wordt weergegeven in plaats van hoe dit op te lossen. Als je nog steeds een keuze moet maken tussen de twee, bekijk dan de uitgebreidere vergelijking in onze handleiding. testtools voor mobiele apps is een goede volgende stap, en voorbeeldtestcases voor mobiele apparaten laten zien waar deze locators uiteindelijk hun input aan leveren.







