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.
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.
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.
⚠️ 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.
- 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.
- Collega il tuo Android dispositivo al PC tramite un cavo USB.
- Selezionare l'opzione "Guru99 app dall'elenco delle applicazioni, come mostrato di seguito.
- 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.
- Dopo che l'aggiornamento è completato, uno screenshot dell' GuruL'applicazione 99 si apre nel riquadro di sinistra.
- 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.
- Seleziona il pulsante "Quiz" nell'immagine qui sopra per visualizzarne le diverse proprietà (testo, ID risorsa...).
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.
Migliori id-risorsa L'attributo può essere utilizzato come "id".
Migliori classe L'attributo può essere utilizzato come "className".
Migliori contenuto-desc L'attributo può essere utilizzato come "AccessibilityId".
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:
- Seleziona il nodo nel pannello superiore e leggi il suo classe, testo, id-risorsa and contenuto-desc valori nel pannello inferiore.
- Preferisci un singolo attributo stabile. Se resource-id è presente, utilizzalo e fermati: non è necessario alcun XPath.
- Se non c'è nulla di unico, combina due attributi in un unico predicato.
- 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?
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.







