Tutorial UIAutomatorViewer: Ispettore per Android Collaudo

⚡ Riepilogo intelligente

UIAutomatorViewer è un ispettore grafico incluso nel pacchetto Android SDK che cattura uno screenshot del dispositivo, esegue il rendering della gerarchia delle viste ed espone gli attributi Appium deve essere in grado di individuare con precisione pulsanti, campi ed etichette.

  • 🔘 Cosa fa: Scansiona un live Android La schermata mostra la gerarchia dei nodi accanto a una finestra delle proprietà per l'elemento selezionato.
  • ☑️ Dove vive: Il lanciatore si trova nel Android cartella degli strumenti SDK come uiautomatorviewer.bat e avvia un Java finestra del desktop.
  • Flusso di acquisizione: Attiva le opzioni sviluppatore, collega il telefono tramite USB, quindi premi Screenshot dispositivo per caricare la schermata corrente.
  • 🧪 Mappa degli attributiping: Il testo diventa nome, l'ID della risorsa diventa ID, la classe diventa nomeClasse e la descrizione del contenuto diventa l'ID di accessibilità.
  • Risoluzione dei problemi: Il messaggio “No Android La dicitura "i dispositivi sono stati rilevati da adb" indica quasi sempre un problema con un cavo, un driver o un'impostazione di debug.
  • 📊 Opzione moderna: Appium L'ispettore copre Android e iOS e rimane disponibile anche dopo che il pacchetto di strumenti SDK legacy è stato ritirato.

Ispettore UIAutomatorViewer per Android test dell'applicazione

Cos'è UIAutomatorViewer?

UIAutomatorViewer è uno strumento GUI per scansionare e analizzare i componenti dell'interfaccia utente di un Android applicazione. Per automatizzare qualsiasi Android applicazione utilizzando Appium, un utente deve identificare gli oggetti nell'AUT (Application Under Test). Con UIAutomatorViewer puoi ispezionare l'interfaccia utente di un Android Applicazione per scoprire la gerarchia e visualizzare le diverse proprietà (id, testo…) dell'elemento.

Durante l'esecuzione degli script di automazione, Appium Questo codice utilizza UIAutomatorViewer per identificare diverse proprietà dell'oggetto e le usa per individuare l'oggetto desiderato. Questa semplice idea – leggere l'attributo nell'inspector e poi riutilizzarlo come localizzatore nello script – è ciò che viene illustrato nel resto di questa pagina.

Lo screenshot qui sotto mostra lo strumento nel suo normale stato di funzionamento: la schermata del dispositivo acquisita a sinistra, l'albero dei nodi in alto a destra e la finestra delle proprietà del nodo selezionato al di sotto.

Finestra UIAutomatorViewer che mostra la schermata del dispositivo acquisita, l'albero della gerarchia dei nodi e il pannello dei dettagli del nodo.

Prerequisiti per l'utilizzo di UIAutomatorViewer

Lo strumento di ispezione legge lo schermo in tempo reale di un telefono cellulare reale o di un emulatore, quindi è necessaria una piccola configurazione iniziale prima che la finestra visualizzi qualsiasi informazione.

  • A Java Kit di sviluppo: uiautomatorviewer è un Java Applicazione desktop avviata tramite uno script batch, pertanto è necessario che il JDK sia installato e accessibile tramite il percorso di sistema.
  • Migliori Android SDK: il visualizzatore è incluso nell'SDK strumenti cartella, quindi l'SDK deve essere installato prima che il launcher sia presente sul disco.
  • Platform-tools e adb: lo spettatore parla al dispositivo attraverso il Android Ponte di debug, quindi adb deve essere installato e in grado di rilevare il telefono.
  • Opzioni sviluppatore e debug USB: Entrambe le opzioni devono essere attivate nelle impostazioni del dispositivo, altrimenti adb non visualizzerà mai il dispositivo.
  • Un cavo USB per il trasferimento dati e il relativo driver: un cavo di sola ricarica o un driver del produttore mancante su Windowsproduce un elenco di dispositivi vuoto.
  • L'applicazione in fase di test: L'app deve essere installata e aperta sul dispositivo, perché lo strumento di analisi acquisisce tutto ciò che è visualizzato sullo schermo.

Con questi sei elementi a disposizione, la fase di download è breve.

Come scaricare e installare UIAutomatorViewer

UIAutomatorViewer fa parte di Android Gestore SDK e sarà accessibile una volta installato il gestore SDK. Scarica e installa il Android SDK da l'ufficiale Android Studio pagina di download.

Una volta che il Android L'SDK è installato, accedere al seguente percorso:

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

Noterai un file batch con questo nome:

uiautomatorviewer.bat

Double Fai clic su di esso per avviare l'interfaccia grafica di UIAutomatorViewer. L'elenco delle cartelle è simile a quello mostrato di seguito, con il file batch posizionato accanto agli altri strumenti SDK.

Android cartella degli strumenti SDK in Windows Esploratore contenente il programma di avvio batch uiautomatorviewer

⚠️ Nota sulla versione: AndroidLa documentazione legacy di UI Automator descrive ancora l'avvio dello strumento da /utensili/ma l'obsoleto standalone Android Strumenti SDK Il pacchetto non è più offerto da SDK Manager nella versione corrente Android Studio rilasci. Le installazioni di lunga data e gli archivi SDK più vecchi contengono ancora il launcher; in una nuova installazione il file è solitamente assente e Appium Inspector è la soluzione più pratica. I passaggi originali sopra descritti sono stati mantenuti perché rimangono validi per qualsiasi macchina che disponga ancora della cartella degli strumenti.

Come utilizzare UIAutomatorViewer per trovare oggetti nella tua applicazione

La sequenza di acquisizione è sempre la stessa: preparare il dispositivo, posizionare lo schermo di interesse davanti alla fotocamera, quindi scattare la foto.

  1. Consentire a tutti opzioni per gli sviluppatori sul tuo dispositivo. Leggi AndroidGuida alla configurazione delle opzioni sviluppatore sul dispositivo per vedere come abilitare le opzioni sviluppatore su Android dispositivi.
  2. Collega il tuo Android dispositivo al PC tramite un cavo USB.
  3. Selezionare l'opzione "Guru99 app dall'elenco delle applicazioni, come mostrato di seguito.

Guru99 applicazioni selezionate da Android elenco delle applicazioni dei dispositivi

  1. Clicca su Screenshot del dispositivo pulsante per aggiornare UIAutomatorViewer e per caricare il Guru99 applicazione GUI nello strumento. Il pulsante si trova nella barra degli strumenti evidenziata di seguito.

Pulsante della barra degli strumenti per lo screenshot del dispositivo utilizzato per aggiornare l'acquisizione di UIAutomatorViewer

  1. Dopo che l'aggiornamento è completato, uno screenshot dell' GuruL'applicazione 99 si apre nel riquadro di sinistra.

Catturato Guru99 schermate dell'applicazione caricate nel riquadro sinistro di UIAutomatorViewer

  1. Come vedi nell'immagine sopra, sul lato destro della finestra ci sono 2 pannelli.

Il pannello superiore contiene la gerarchia dei nodi, ovvero la struttura e la disposizione dei componenti dell'interfaccia utente. Cliccando su ciascun nodo, nel pannello inferiore vengono visualizzate le proprietà dell'elemento corrispondente.

  1. Seleziona il pulsante "Quiz" nell'immagine qui sopra per visualizzarne le diverse proprietà (testo, ID risorsa...).

Il pulsante "Quiz" è selezionato nell'albero dei nodi e le sue proprietà sono elencate nel pannello dei dettagli inferiore.

Come utilizzare queste proprietà per identificare gli elementi per l'automazione

Bene, non puoi usare le proprietà direttamente: ogni proprietà ha un nome diverso nell'API di automazione. Vediamo come mettere a frutto i valori di queste proprietà. I ​​seguenti attributi possono essere utilizzati per identificare il pulsante "Quiz" nel Guru99 app.

Attributo in UIAutomatorViewer Nome del localizzatore nello script Utilizzo tipico
testo Nome Etichetta visibile su un pulsante o un campo statico
id-risorsa id La scelta più stabile quando lo sviluppatore ne imposta una
classe nome della classe Selezione di un gruppo di widget dello stesso tipo
contenuto-desc ID di accessibilità Localizzatore multipiattaforma che aiuta anche i lettori di schermo

Ogni mappaping è visibile direttamente nel pannello dei dettagli del nodo. testo L'attributo può essere utilizzato come "nome", come mostrato nella riga della proprietà qui sotto.

Riga dei dettagli del nodo che mostra il valore dell'attributo di testo utilizzato come localizzatore del nome

Migliori id-risorsa L'attributo può essere utilizzato come "id".

Riga dei dettagli del nodo che mostra il valore dell'attributo resource-id utilizzato come localizzatore ID.

Migliori classe L'attributo può essere utilizzato come "className".

Riga dei dettagli del nodo che mostra il valore dell'attributo di classe utilizzato come localizzatore className

Migliori contenuto-desc L'attributo può essere utilizzato come "AccessibilityId".

Riga dei dettagli del nodo che mostra il valore dell'attributo content-desc utilizzato come localizzatore ID di accessibilità.

Insieme agli attributi sopra menzionati, possiamo scrivere XPath per l'identificazione degli oggetti. Anche i nomi di questi attributi sono quelli che passi capacità desiderate e strategie di localizzazione una volta che lo script è in esecuzione.

Come creare localizzatori XPath dagli attributi di UIAutomatorViewer

XPath è la soluzione di ripiego quando nessun singolo attributo è univoco di per sé. Il pannello dei dettagli del nodo fornisce tutti i valori necessari all'espressione, quindi un XPath non è altro che l'attributo già letto, scritto in forma di predicato.

Esaminate il pannello in quest'ordine:

  1. Seleziona il nodo nel pannello superiore e leggi il suo classe, testo, id-risorsa and contenuto-desc valori nel pannello inferiore.
  2. Preferisci un singolo attributo stabile. Se resource-id è presente, utilizzalo e fermati: non è necessario alcun XPath.
  3. Se non c'è nulla di unico, combina due attributi in un unico predicato.
  4. Se l'etichetta cambia durante l'esecuzione, passare dal test di uguaglianza a un test di corrispondenza parziale.

I modelli seguenti utilizzano i nomi degli attributi esattamente come vengono riportati da UIAutomatorViewer.

<!-- 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']

Alcune regole impediscono a queste espressioni di diventare fragili. I percorsi assoluti che attraversano l'intero albero si rompono nel momento in cui uno sviluppatore racchiude un layout in un altro contenitore, quindi inizia ogni espressione con la doppia barra e confrontala invece su un attributo. I predicati basati su indice si comportano allo stesso modo: sopravvivono finché lo schermo non acquisisce una riga. E un'espressione che è univoca sullo schermo di un telefono può corrispondere a diversi nodi su un layout di tablet, quindi riesamina lo stesso schermo su entrambi i fattori di forma prima di promuovere il localizzatore in una suite. La stessa disciplina si applica a XPath in Selenium, dove l'albero è un DOM piuttosto che una gerarchia di viste.

Errori che si possono riscontrare durante l'utilizzo di UIAutomatorViewer

La maggior parte dei guasti si verifica prima che venga disegnato un singolo nodo, e quasi tutti sono riconducibili alla connessione tra la workstation e il dispositivo mobile.

  • Vedo l'errore — “No Android "I dispositivi sono stati rilevati da adb" — come mostrato nello screenshot qui sotto. Come posso risolvere questo problema?

finestra di dialogo UIAutomatorViewer che segnala che non Android dispositivi rilevati da adb

Soluzione: Assicurati che il dispositivo sia collegato al PC.

La tabella seguente estende tale risposta agli altri messaggi che i tester hanno riscontrato più frequentemente.

Sintomo Causa probabile Fissare
Non Android dispositivi rilevati da adb Dispositivo non collegato, debug USB disattivato o cavo di sola ricarica Ricollega il dispositivo con un cavo dati, abilita il debug USB e verifica che il telefono compaia nell'elenco dei dispositivi adb.
Dispositivo segnalato come non autorizzato La richiesta di impronta digitale RSA non è mai stata accettata sul telefono. Sblocca lo schermo, ricollega e tocca Consenti debug USB
Il file uiautomatorviewer.bat non è presente. Il pacchetto di strumenti SDK obsoleto non è installato Utilizzare un'installazione SDK esistente che lo contenga ancora oppure passare a Appium Ispettore
La gerarchia è vuota oppure l'acquisizione non riesce. La schermata è cambiata durante il dump oppure l'app blocca l'acquisizione dello schermo Tieni fermo lo schermo e scatta di nuovo la foto; le schermate protette non possono essere acquisite
Il contenuto di WebView viene visualizzato come un singolo nodo Il lettore legge solo opinioni in lingua originale Esamina il contenuto web con gli strumenti per sviluppatori del browser o con uno strumento di ispezione che supporti il ​​contesto web.

UIAutomatorViewer vs Appium Ispettore vs Ispettore di layout

Tre ispettori vengono comunemente utilizzati contro Android schermi, e risolvono problemi leggermente diversi.

Criterio UIAutomatorViewer Appium Ispettore Android Studio Ispettore di layout
Navi con L'eredità Android Pacchetto di strumenti SDK Un'applicazione desktop autonoma Android Studio
Piattaforme ispezionate Android esclusivamente Android e iOS Android esclusivamente
Necessita di un server in esecuzione No, comunica direttamente con adb Sì, si collega a un Appium sessione server No, si collega a un processo di debug.
Genera il codice di localizzazione No, i valori vengono copiati a mano Sì, suggerisce localizzatori e può registrare azioni No, è una visualizzazione di debug.
più adatto a Una rapida ricerca degli attributi su una configurazione precedente Creazione e convalida di localizzatori per una suite Diagnosi dei problemi di layout e rendering

Per una suite che già attraversa Appium, l'Inspector è il successore naturale: legge gli stessi attributi, esegue lo stesso driver UiAutomator2 sottostante e funziona anche con iOS. Appium Progetto ispettore viene rilasciato attivamente, quindi è la scelta più sicura per i nuovi lavori, mentre Layout Inspector rimane utile quando la domanda è perché una vista viene renderizzata in modo strano piuttosto che come risolverlo. Se stai ancora scegliendo uno stack, il confronto più ampio nella nostra guida a strumenti di test delle app mobili è un buon passo successivo, e casi di test mobili di esempio mostra a cosa confluiscono infine questi localizzatori.

DOMANDE FREQUENTI

Solo parzialmente. Il visualizzatore legge la gerarchia di visualizzazione nativa, quindi una WebView di solito appare come un singolo nodo opaco. Ispeziona l'HTML al suo interno con gli strumenti per sviluppatori del browser oppure utilizza uno strumento di ispezione in grado di passare al contesto web.

No. Lo strumento è legato al Android Ponte di debug e il Android gerarchia delle viste. Per gli schermi iOS utilizzare Appium Ispettore or Xcodel'ispettore di accessibilità, che leggeva invece l'albero degli elementi XCUITest.

Il comando scrive la stessa gerarchia in un file XML sul dispositivo, senza grafica. È utile negli script e sui computer senza interfaccia grafica, ma si perde la sovrapposizione dello screenshot che facilita l'individuazione del nodo corretto.

I motori di localizzazione basati sull'apprendimento automatico valutano congiuntamente diversi attributi (testo, classe, posizione e nodi vicini) e risolvono nuovamente l'elemento quando uno di essi cambia. Questo comportamento di auto-riparazione riduce gli errori causati da un ID rinominato.

Sì. Incolla i valori degli attributi in un commento e Copilot genererà automaticamente il campo corrispondente dell'oggetto pagina e il metodo di clic. Verifica sempre il localizzatore generato confrontandolo con la schermata reale, perché il suggerimento è solo un'ipotesi, non una ricerca certa.

No. Il visualizzatore funziona con la versione installata sul dispositivo, quindi è comunque possibile esaminare un APK che non hai compilato. Verranno visualizzati solo gli attributi effettivamente impostati dallo sviluppatore, come resource-id e content-desc.

Sì. Un emulatore esegue adb esattamente come un telefono fisico, quindi il pulsante "Screenshot dispositivo" lo cattura allo stesso modo. Gli emulatori sono utili per le prime fasi di sviluppo degli script, anche se le versioni finali vanno eseguite su hardware reale.

Assegna a ciascun controllo un identificativo stabile e indipendente dalla lingua, che funge sia da ID di accessibilità in uno script, sia da etichetta pronunciata da un lettore di schermo. L'affidabilità dei test e l'accessibilità migliorano grazie a questa singola modifica.

Riassumi questo post con: