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.

  • 🔘 Co robi: Skanuje na żywo Android ekran i pokazuje hierarchię węzłów obok arkusza właściwości dla wybranego elementu.
  • ️ Gdzie żyje: Wyrzutnia znajduje się w Android Folder narzędzi SDK jako uiautomatorviewer.bat i uruchamia Java okno pulpitu.
  • ✅ Przechwytywanie przepływu: Włącz opcje programistyczne, podłącz telefon przez USB, a następnie naciśnij przycisk Zrzut ekranu urządzenia, aby załadować bieżący ekran.
  • 🧪 Mapa atrybutówping: tekst staje się nazwą, identyfikator zasobu staje się identyfikatorem, klasa staje się nazwą klasy, a opis zawartości staje się identyfikatorem dostępności.
  • 🛠️. Rozwiązywanie problemów: Wiadomość „Nie Android „urządzenia zostały wykryte przez adb” prawie zawsze wskazuje na kabel, sterownik lub ustawienia debugowania.
  • 📊 Opcja nowoczesna: Appium Inspektor obejmuje Android i iOS i nadal jest dostępny po wycofaniu starszego pakietu narzędzi SDK.

Inspektor UIAutomatorViewer dla Android testowanie aplikacji

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.

Okno UIAutomatorViewer pokazujące przechwycony ekran urządzenia, drzewo hierarchii węzłów i panel szczegółów węzła

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.

Android Folder narzędzi SDK w Windows Eksplorator zawierający program uruchamiający partie uiautomatorviewer

⚠️ 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.

  1. 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ń.
  2. Podłącz Android urządzenie do komputera za pomocą kabla USB.
  3. Wybierz "Guru99” z listy aplikacji, jak pokazano poniżej.

Guru99 aplikacji wybranych z Android lista aplikacji urządzeń

  1. 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.

Przycisk paska narzędzi zrzutu ekranu urządzenia służący do odświeżania przechwytywania UIAutomatorViewer

  1. Po zakończeniu odświeżania zostanie wyświetlony zrzut ekranu GuruW lewym panelu otwiera się aplikacja 99.

Schwytany GuruEkran aplikacji 99 załadowany do lewego panelu UIAutomatorViewer

  1. 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.

  1. Kliknij przycisk „Quiz” na powyższym obrazku, aby wyświetlić jego różne właściwości (tekst, identyfikator zasobu…).

Wybrany przycisk quizu w drzewie węzłów, którego właściwości są wymienione w dolnym panelu szczegółów

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.

Wiersz szczegółów węzła pokazujący wartość atrybutu tekstowego używaną jako lokalizator nazwy

identyfikator zasobu atrybut może być używany jako „id”.

Wiersz szczegółów węzła pokazujący wartość atrybutu identyfikatora zasobu używaną jako lokalizator identyfikatora

klasa atrybut może być używany jako „className”.

Wiersz szczegółów węzła pokazujący wartość atrybutu klasy używaną jako lokalizator nazwy klasy

opis treści Atrybut może być używany jako „AccessibilityId”.

Wiersz szczegółów węzła pokazujący wartość atrybutu content-desc używanego jako lokalizator identyfikatora dostępności

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:

  1. Wybierz węzeł w górnym panelu i odczytaj jego klasa, XNUMX, identyfikator zasobu oraz opis treści wartości w dolnym panelu.
  2. Preferuj pojedynczy, stabilny atrybut. Jeśli resource-id jest wypełniony, użyj go i zakończ — XPath nie jest potrzebny.
  3. Jeśli nic nie jest unikalne, połącz dwa atrybuty w jeden predykat.
  4. 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ć?

Okno dialogowe UIAutomatorViewer informuje, że nie Android urządzenia zostały wykryte przez adb

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.

FAQ

Tylko częściowo. Przeglądarka odczytuje natywną hierarchię widoku, więc WebView zazwyczaj pojawia się jako jeden nieprzezroczysty węzeł. Przejrzyj kod HTML za pomocą narzędzi programistycznych przeglądarki lub skorzystaj z inspektora, który może przełączać się na kontekst sieciowy.

Nie. Narzędzie jest powiązane z Android Debug Bridge i Android hierarchia widoków. W przypadku ekranów iOS użyj Appium Inspektor or XcodeInspektor dostępności, który zamiast tego odczytuje drzewo elementów XCUITest.

Polecenie zapisuje tę samą hierarchię do pliku XML na urządzeniu, bez grafiki. Jest to przydatne w skryptach i na komputerach bez interfejsu graficznego, ale traci się nakładkę zrzutu ekranu, która pozwala szybko znaleźć odpowiedni węzeł.

Silniki lokalizatorów oparte na uczeniu maszynowym oceniają kilka atrybutów łącznie – tekst, klasę, pozycję i sąsiednie węzły – i ponownie rozpoznają element, gdy jeden z nich ulegnie zmianie. To samonaprawiające się zachowanie zmniejsza liczbę błędów spowodowanych zmianą nazwy identyfikatora.

Tak. Wklej wartości atrybutów do komentarza, a Copilot zazwyczaj utworzy odpowiednie pole obiektu strony i metodę kliknięcia. Zawsze weryfikuj wygenerowany lokalizator na żywo, ponieważ sugestia jest zgadywaniem, a nie wyszukiwaniem.

Nie. Przeglądarka działa w oparciu o zainstalowaną kompilację na urządzeniu, więc plik APK, którego nie skompilowałeś, nadal może zostać sprawdzony. Zostaną wypełnione tylko atrybuty faktycznie ustawione przez programistę, takie jak resource-id i content-desc.

Tak. Emulator wydaje się działać dokładnie tak samo jak fizyczny telefon, więc przycisk „Zrzut ekranu urządzenia” rejestruje go w ten sam sposób. Emulatory są wygodne do wstępnego pisania skryptów, choć finalne uruchomienia powinny odbywać się na prawdziwym sprzęcie.

Nadaje każdemu elementowi sterującemu stabilny, niezależny od języka uchwyt, który pełni również funkcję identyfikatora dostępności w skrypcie oraz etykiety ogłaszanej przez czytnik ekranu. Niezawodność testów i dostępność poprawiają się dzięki tej samej, jednowierszowej zmianie.

Podsumuj ten post następująco: