Samouczek UIAutomatorViewer: Inspektor ds Android Testy
⚡ Inteligentne podsumowanie
UIAutomatorViewer to graficzny inspektor dołączony do Android Zestaw SDK, który przechwytuje zrzut ekranu urządzenia, renderuje hierarchię widoków i udostępnia atrybuty Appium musi niezawodnie lokalizować przyciski, pola i etykiety.
Czym jest UIAutomatorViewer?
UIAutomatorViewer jest narzędziem GUI służącym do skanowania i analizowania komponentów interfejsu użytkownika Android aplikacja. Aby zautomatyzować dowolne Android aplikacja za pomocą Appium, użytkownik musi zidentyfikować obiekty w testowanej aplikacji (AUT). Za pomocą UIAutomatorViewer można sprawdzić interfejs użytkownika. Android Aplikacja służąca do wyszukiwania hierarchii i przeglądania różnych właściwości (id, tekst…) elementu.
Podczas wykonywania skryptów automatyzujących, Appium używa UIAutomatorViewer do identyfikacji różnych właściwości obiektu i na ich podstawie identyfikuje wymagany obiekt. Ta sama idea – odczytanie atrybutu w inspektorze, a następnie ponowne użycie go jako lokalizatora w skrypcie – jest tematem dalszej części tej strony.
Poniższy zrzut ekranu przedstawia narzędzie w normalnym trybie pracy: ekran przechwyconego urządzenia po lewej stronie, drzewo węzłów w prawym górnym rogu i arkusz właściwości wybranego węzła pod nim.
Wymagania wstępne dotyczące korzystania z UIAutomatorViewer
Inspektor odczytuje obraz na żywo z prawdziwego telefonu lub emulatora, więc zanim okno zacznie cokolwiek wyświetlać, konieczne jest wykonanie kilku prostych czynności konfiguracyjnych.
- A Java Zestaw deweloperski: uiautomatorviewer to Java aplikacja komputerowa uruchamiana przez skrypt wsadowy, więc JDK musi być zainstalowany i dostępny na ścieżce systemowej.
- Android SDK: widz wysyła wewnątrz zestawu SDK narzędzia folderu, więc SDK musi zostać zainstalowany przed umieszczeniem programu uruchamiającego na dysku.
- Narzędzia platformy i adb: widz komunikuje się z urządzeniem za pośrednictwem Android Debug Bridge, więc adb musi być zainstalowany i widzieć słuchawkę.
- Opcje programistyczne i debugowanie USB: obie opcje muszą być włączone w ustawieniach urządzenia, w przeciwnym razie adb nigdy nie wyświetli urządzenia.
- Kabel USB umożliwiający przesyłanie danych i sterownik: kabel tylko do ładowania lub brakujący sterownik producenta Windows, generuje pustą listę urządzeń.
- Aplikacja poddana testowi: Aplikacja musi być zainstalowana i otwarta na urządzeniu, ponieważ inspektor przechwytuje wszystko, co aktualnie znajduje się na ekranie.
Mając te sześć elementów na miejscu, etap pobierania jest krótki.
Jak pobrać i zainstalować UIAutomatorViewer
UIAutomatorViewer jest częścią Android Menedżer SDK będzie dostępny po zainstalowaniu menedżera SDK. Pobierz i zainstaluj Android SDK z oficjalny Android Studio pobrać stronę.
Po Android Po zainstalowaniu zestawu SDK przejdź do tej ścieżki:
c:\users\<username>\AppData\Local\Android\sdk\tools
Zauważysz plik wsadowy o tej nazwie:
uiautomatorviewer.bat
Double Kliknij go, aby uruchomić graficzny interfejs użytkownika UIAutomatorViewer. Lista folderów wygląda jak poniżej, a plik wsadowy znajduje się obok innych narzędzi SDK.
⚠️ Uwaga dotycząca wersji: AndroidWłasna dokumentacja starszej wersji UI Automator nadal opisuje uruchamianie narzędzia z /narzędzia/, ale przestarzały samodzielny Android Narzędzia SDK pakiet nie jest już oferowany przez Menedżera SDK w obecnej wersji Android Studio wydania. Długotrwałe instalacje i starsze archiwa SDK nadal zawierają program uruchamiający; w przypadku nowej instalacji plik ten zwykle nie występuje, a Appium Inspector to praktyczny zamiennik. Oryginalne kroki powyżej zostały zachowane, ponieważ są poprawne dla każdego komputera, na którym nadal znajduje się folder narzędzi.
Jak używać UIAutomatorViewer do znajdowania obiektów w aplikacji
Sekwencja przechwytywania jest zawsze taka sama: przygotuj urządzenie, umieść przed aparatem ekran, na którym Ci zależy, a następnie zrób zdjęcie.
- umożliwiać opcje dla programistów na Twoim urządzeniu. Przeczytaj AndroidPrzewodnik po konfigurowaniu opcji programistycznych na urządzeniu aby zobaczyć, jak włączyć opcje programistyczne Android urządzeń.
- Podłącz Android urządzenie do komputera za pomocą kabla USB.
- Wybierz "Guru99” z listy aplikacji, jak pokazano poniżej.
- Kliknij ikonę Zrzut ekranu urządzenia przycisk do odświeżenia UIAutomatorViewer i załadowania Guru99. Interfejs graficzny aplikacji do narzędzia. Przycisk znajduje się na pasku narzędzi, zaznaczonym poniżej.
- Po zakończeniu odświeżania zostanie wyświetlony zrzut ekranu GuruW lewym panelu otwiera się aplikacja 99.
- Jak widać na powyższym obrazku, po prawej stronie okna znajdują się 2 panele.
Górny panel zawiera hierarchię węzłów – sposób rozmieszczenia i składowania komponentów interfejsu użytkownika. Kliknięcie każdego węzła powoduje wyświetlenie właściwości danego elementu interfejsu użytkownika w dolnym panelu.
- Kliknij przycisk „Quiz” na powyższym obrazku, aby wyświetlić jego różne właściwości (tekst, identyfikator zasobu…).
Jak używać tych właściwości do identyfikacji elementów do automatyzacji
Cóż, nie można używać właściwości bezpośrednio – każda właściwość ma inną nazwę w API automatyzacji. Zobaczmy, jak wykorzystać te wartości właściwości. Poniższe atrybuty można wykorzystać do identyfikacji przycisku „Quiz” w Guru99 aplikacji.
| Atrybut w UIAutomatorViewer | Nazwa lokalizatora w skrypcie | Typowe zastosowanie |
|---|---|---|
| XNUMX | Nazwa | Widoczna etykieta na przycisku lub polu statycznym |
| identyfikator zasobu | id | Najbardziej stabilny wybór, gdy deweloper ustala jedną opcję |
| klasa | nazwa klasy | Wybieranie grupy widżetów tego samego typu |
| opis treści | identyfikator dostępności | Lokalizator międzyplatformowy, który pomaga również czytnikom ekranu |
Każda mapaping jest widoczny bezpośrednio w panelu szczegółów węzła. XNUMX Atrybut może być używany jako „nazwa”, jak pokazano w wierszu właściwości poniżej.
identyfikator zasobu atrybut może być używany jako „id”.
klasa atrybut może być używany jako „className”.
opis treści Atrybut może być używany jako „AccessibilityId”.
Oprócz powyższych atrybutów możemy pisać ścieżki XPath do identyfikacji obiektów. Te nazwy atrybutów są również tym, co przekazujesz. pożądane możliwości i strategie lokalizowania po uruchomieniu skryptu.
Jak budować lokalizatory XPath z atrybutów UIAutomatorViewer
XPath to rozwiązanie awaryjne, gdy żaden pojedynczy atrybut nie jest unikatowy sam w sobie. Panel szczegółów węzła wyświetla wszystkie wartości potrzebne wyrażeniu, więc XPath to tak naprawdę atrybut, który już odczytałeś, zapisany w formie predykatu.
Pracuj nad panelem w następującej kolejności:
- Wybierz węzeł w górnym panelu i odczytaj jego klasa, XNUMX, identyfikator zasobu oraz opis treści wartości w dolnym panelu.
- Preferuj pojedynczy, stabilny atrybut. Jeśli resource-id jest wypełniony, użyj go i zakończ — XPath nie jest potrzebny.
- Jeśli nic nie jest unikalne, połącz dwa atrybuty w jeden predykat.
- Jeżeli etykieta ulegnie zmianie w czasie wykonywania, należy przełączyć test równości na częściowe dopasowanie.
Poniższe wzorce wykorzystują nazwy atrybutów dokładnie tak, jak zgłasza je 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']
Kilka zasad zapobiega kruchości tych wyrażeń. Ścieżki absolutne, które przechodzą przez całe drzewo, przestają działać w momencie, gdy programista umieszcza układ w kolejnym kontenerze, dlatego każde wyrażenie należy zaczynać od podwójnego ukośnika i dopasowywać do atrybutu. Predykaty oparte na indeksie zachowują się podobnie — są aktywne, dopóki na ekranie nie pojawi się wiersz. Wyrażenie, które jest unikalne na ekranie telefonu, może pasować do kilku węzłów na układzie tabletu, dlatego przed przeniesieniem lokalizatora do pakietu należy ponownie sprawdzić ten sam ekran na obu formatach. Ta sama zasada dotyczy XPath w Selenium, gdzie drzewo jest modelem DOM, a nie hierarchią widoków.
Błędy, na które można natrafić podczas korzystania z UIAutomatorViewer
Większość awarii zdarza się jeszcze przed narysowaniem choćby jednego węzła i niemal wszystkie z nich są spowodowane połączeniem między stacją roboczą a telefonem.
- Widzę błąd – „Nie Android Urządzenia zostały wykryte przez adb” — jak pokazano na zrzucie ekranu poniżej. Jak mogę to rozwiązać?
Rozwiązanie: Upewnij się, że urządzenie jest podłączone do komputera.
Poniższa tabela rozszerza tę odpowiedź o inne wiadomości, na które testerzy odpowiadają najczęściej.
| Objaw | Prawdopodobna przyczyna | Fix |
|---|---|---|
| Nie Android urządzenia zostały wykryte przez adb | Urządzenie nie jest podłączone, debugowanie USB jest wyłączone lub kabel służy tylko do ładowania | Podłącz ponownie za pomocą kabla danych, włącz debugowanie USB, a następnie sprawdź, czy telefon znajduje się na liście urządzeń adb |
| Urządzenie oznaczone jako nieautoryzowane | Monit o odcisk palca RSA nigdy nie został zaakceptowany na telefonie | Odblokuj ekran, podłącz ponownie i dotknij opcji Zezwalaj na debugowanie USB |
| Brakuje pliku uiautomatorviewer.bat | Przestarzały pakiet narzędzi SDK nie jest zainstalowany | Użyj istniejącej instalacji zestawu SDK, która nadal ją zawiera, lub przełącz się na Appium Inspektor |
| Hierarchia jest pusta lub przechwytywanie się nie powiedzie | Ekran uległ zmianie podczas zrzutu lub aplikacja blokuje przechwytywanie ekranu | Przytrzymaj ekran nieruchomo i zrób ponownie zdjęcie; nie można przechwycić zabezpieczonych ekranów |
| Zawartość WebView wyświetlana jest jako pojedynczy węzeł | Widz odczytuje tylko widoki natywne | Przeprowadź inspekcję zawartości sieci Web za pomocą narzędzi programistycznych przeglądarki lub inspektora obsługującego kontekst sieci Web |
UIAutomatorViewer kontra Appium Inspektor kontra inspektor układu
Trzech inspektorów jest powszechnie używanych przeciwko Android ekrany i rozwiązują nieco inne problemy.
| Kryterium | UIAutomatorViewer | Appium Inspektor | Android Studio Inspektor układu |
|---|---|---|---|
| Statki z | Dziedzictwo Android Pakiet narzędzi SDK | Samodzielna aplikacja na komputery stacjonarne | Android Studio |
| Skontrolowano platformy | Android tylko | Android i iOS | Android tylko |
| Wymaga działającego serwera | Nie, komunikuje się bezpośrednio z adb | Tak, łączy się z Appium sesja serwera | Nie, jest podłączony do procesu, który można debugować |
| Generuje kod lokalizatora | Nie, wartości są kopiowane ręcznie | Tak, sugeruje lokalizatory i może rejestrować działania | Nie, to widok debugowania |
| Najlepiej nadaje się do | Szybkie wyszukiwanie atrybutów w starszej konfiguracji | Budowanie i weryfikacja lokalizatorów dla pakietu | Diagnozowanie problemów z układem i renderowaniem |
Dla pakietu, który już działa Appium, Inspector jest naturalnym następcą: odczytuje te same atrybuty, uruchamia ten sam sterownik UiAutomator2 i działa również w systemie iOS. Appium Projekt inspektora jest aktywnie udostępniany, więc jest bezpieczniejszym wyborem dla nowych projektów, podczas gdy Layout Inspector pozostaje przydatny, gdy pojawia się pytanie, dlaczego widok renderuje się nieprawidłowo, a nie jak rozwiązać ten problem. Jeśli nadal rozważasz wybór stosu, szersze porównanie znajdziesz w naszym przewodniku. narzędzia do testowania aplikacji mobilnych to dobry kolejny krok i przykładowe przypadki testowe dla urządzeń mobilnych pokaż, do czego ostatecznie służą te lokalizatory.







