Testowanie Uiautomator

  
Framework do testowania interfejsu użytkownika w różnych aplikacjach
Ostatnia aktualizacja Wersja stabilna Wersja kandydująca do publikacji Wersja Beta Wersja alfa
7 maja 2025 r. 2.3.0 - - 2.4.0-alpha02

Deklarowanie zależności

Aby dodać zależność od testu, musisz dodać do projektu repozytorium Google Maven. Więcej informacji znajdziesz w repozytorium Maven firmy Google.

Dodaj zależności dla artefaktów, których potrzebujesz, w pliku build.gradle aplikacji lub modułu:

Odlotowe

dependencies {
    // Use to implement UIAutomator tests
    androidTestImplementation "androidx.test.uiautomator:uiautomator:2.4.0-alpha02"
}

Kotlin

dependencies {
    // Use to implement UIAutomator tests
    androidTestImplementation("androidx.test.uiautomator:uiautomator:2.4.0-alpha02")
}

Więcej informacji o zależnościach znajdziesz w artykule Dodawanie zależności kompilacji.

Opinia

Twoja opinia pomoże nam ulepszyć Jetpacka. Jeśli zauważysz nowe problemy lub masz pomysły na ulepszenie tej biblioteki, daj nam znać. Zanim utworzysz nowy problem, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz zagłosować na istniejący problem, klikając przycisk z gwiazdką.

Tworzenie nowego zgłoszenia

Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.

Wersja 2.4

Wersja 2.4.0-alpha02

7 maja 2025 r.

Element androidx.test.uiautomator:uiautomator:2.4.0-alpha02 został zwolniony. Wersja 2.4.0-alpha02 zawiera te komity.

Nowe funkcje

  • Początkowy kształt nowej UiautomatorApi. UiAutomatorTestScope można utworzyć za pomocą fabryki uiAutomator, która zapewnia dostęp do nowych interfejsów API onView.
  • Wstępne reguły Lint do ostrzegania o używaniu AccessibilityNodeInfo#getText i zalecania korzystania z textAsString.

Zmiany w interfejsie API

  • Dodano Configurator#setDefaultDisplayId, aby ustawić identyfikator wyświetlania, który ogranicza wszystkie wyszukiwania do Icdf17.
  • Zmieniono Searchable (interfejs udostępniany przez UiDeviceUiObject2) na publiczny (I67f18) dla wygody użytkowników.

Poprawki błędów

  • Rozwiązano problem z obsługą kluczy metadanych w UiDevice#pressKeyCodes. (I73f80).
  • Zaktualizowano UiDevice#getWindowRoots, aby zawsze zwracać korzenie w kolejności Z (I87426).
  • Rozwiązaliśmy problem polegający na tym, że niektóre gesty były niekompletne (I60dd3, If4edd).
  • Usunięto błąd, który powodował rzadkie pętle nieskończone podczas wywoływania funkcji UiDevice#scrollUntil (I39989).

Wersja 2.4.0-alpha01

26 czerwca 2024 r.

Element androidx.test.uiautomator:uiautomator:2.4.0-alpha01 został zwolniony. Wersja 2.4.0-alpha01 zawiera te komity.

Zmiany w interfejsie API

  • Parametry Configurator#getKeyInjectionDelaysetKeyInjectionDelay są przestarzałe, ponieważ tekst jest teraz zawsze wstrzykiwany bezpośrednio, a nie przez naciśnięcie klawisza. (I3bcc5).

Poprawki błędów

  • Zaktualizowano opóźnienie między zdarzeniami ruchu UiObject2, aby uwzględnić dynamiczne częstotliwości odświeżania (np. płynny wyświetlacz) (I43f12).
  • Zmniejszenie niestabilności spowodowanej nieaktualnością węzła ułatwień dostępu w niektórych interfejsach użytkownika przez okresowe unieważnianie pamięci podręcznej ułatwień dostępu (I3be25).
  • Naprawiono błąd StaleObjectException występujący podczas wywoływania funkcji toString lub hashCode w przypadku nieaktualnego UiObject2. (I38ea1).
  • Poprawiona wydajność UiWatcher dzięki pomijaniu niepotrzebnych wywołań waitForIdle. (I8c65e).
  • Usunięto nieścisłości w dokumentacji, zwłaszcza w części dotyczącej stosowania poszczególnych parametrów Configurator. (Ie10b1, I71631).

Wersja 2.3.0

Wersja 2.3.0

21 lutego 2024 r.

Element androidx.test.uiautomator:uiautomator:2.3.0 został zwolniony. Wersja 2.3.0 zawiera te commity.

Ważne zmiany od wersji 2.2.0

  • Obsługa wielu wyświetlaczy: dodano obsługę znajdowania i działania na obiektach na wielu wyświetlaczach oraz metody UiDevice zarządzania wyświetlaczami dodatkowymi (Ie6544, I912cd).
  • Nowe selektory:
    • Dodano By.displayId do wybierania obiektów według ich identyfikatora wyświetlania (I1825b).
    • Dodano By.hasParent i By.hasAncestor, aby wybierać obiekty według ich elementów nadrzędnych (I93c36).
    • Dodano By.hint metody do wybierania obiektów na podstawie tekstu podpowiedzi (Idd345).
  • Warunki niestandardowe: udostępniliśmy interfejs Condition, aby obsługiwać niestandardowe warunki oczekiwania, oraz dodaliśmy odpowiednie metody UiDevice#wait, UiObject2#wait i UiObject2#scrollUntil (27c0ea, 099d6e).
  • Poprawki błędów i zwiększenie niezawodności
    • Rozwiązaliśmy problem polegający na tym, że obliczenia rozmiaru wyświetlacza były czasami nieprawidłowe i mogły pomijać części ekranu (Ifc016). Może być konieczne dostosowanie współrzędnych i odstępów używanych w testach.
    • Zaktualizowaliśmy wstrzyknięcie MotionEvent, aby zwiększyć dokładność (678ca3) i lepiej emulować gesty użytkownika (454450).
    • Zwiększono niezawodność przewijania (I7b059), obracania (c6cea0), długich kliknięć (49572b), zbliżania i oddalania (3c619a) itp.

Wersja 2.3.0-rc01

7 lutego 2024 r.

androidx.test.uiautomator:uiautomator:2.3.0-rc01 jest opublikowany bez wprowadzenia zmian. Wersja 2.3.0-rc01 zawiera te commity.

Wersja 2.3.0-beta01

13 grudnia 2023 r.

Element androidx.test.uiautomator:uiautomator:2.3.0-beta01 został zwolniony. Wersja 2.3.0-beta01 zawiera te commity.

Zmiany w interfejsie API

  • Zmieniono nazwy metod UiObject2 na setGestureMarginPercentagesetGestureMarginsPercentage, aby zachować spójność (I24435).

Poprawki błędów

  • Poprawiono błąd występujący, gdy nie można znaleźć lub uzyskać dostępu do dodatkowego wyświetlacza (116b23)

Wersja 2.3.0-alpha05

1 listopada 2023 roku

Element androidx.test.uiautomator:uiautomator:2.3.0-alpha05 został zwolniony. Wersja 2.3.0-alpha05 zawiera te commity.

Zmiany w interfejsie API

  • Dodano UiObject2#getDrawingOrder, aby ujawnić informacje o kolejności rysowania (indeks Z). (I5dfa4).
  • Dodano metody UiDevice służące do uzyskiwania, ustawiania, blokowania i odblokowywania obracania dodatkowych wyświetlaczy. (I912cd).

Poprawki błędów

  • Dodano ponowne próby do UiObject2#scrollUntil, gdy nie udało się wykryć końca przewijania (Ibac6f).
  • Rozwiązaliśmy problem, który powodował, że UiDevice używało nieaktualnego wystąpienia Instrumentation, jeśli zostało ono ponownie utworzone (I18cae).
  • Rozwiązanie problemu polegającego na tym, że w przypadku zrzutu węzłów (Icafcb) może wystąpić NPE, jeśli nie można określić identyfikatora wyświetlania.
  • Dodano ostrzeżenie podczas klikania lub przewijania obiektów, których nie można kliknąć ani przewijać (I4a5d9).
  • Zmniejszona domyślna prędkość przewijania UiObject2, aby zwiększyć niezawodność (I5e071).

Wersja 2.3.0-alpha04

26 lipca 2023 r.

Element androidx.test.uiautomator:uiautomator:2.3.0-alpha04 został zwolniony. Wersja 2.3.0-alpha04 zawiera te commity.

Zmiany w interfejsie API

  • Dodano By.hasParent i By.hasAncestor, aby umożliwić znajdowanie obiektów według ich elementów nadrzędnych (I93c36).
  • Dodano metodę UiObject2#getHint do pobierania tekstu podpowiedzi obiektu oraz metody By.hint do wybierania obiektów na podstawie ich tekstu podpowiedzi (Idd345).
  • Dodano By.displayId, aby umożliwić wybór obiektów na podstawie wyświetlacza, na którym się znajdują (I1825b).
  • Dodano metody UiDevice#getDisplayHeight(int)UiDevice#getDisplayWidth(int), aby znaleźć wymiary wyświetlacza według jego identyfikatora (Ie6544).
  • Ponownie dodano metody wait(SearchCondition, long)wait(UiObject2Condition, long) w celu zapewnienia zgodności wstecznej (Iebfda).
  • Zmieniono UiDevice#executeShellCommand z ukrytego na publiczny, ale nie zalecany (Ic48a1).

Poprawki błędów

  • Zaktualizowano wstrzyknięcie MotionEvent, aby zmniejszyć niestabilność, stawiając na pierwszym miejscu dokładność gestów zamiast szybkości (678ca3).
  • Dodano śledzenie do metod zużywających dużo zasobów, aby wykrywać wąskie gardła w wydajności (d17de3).
  • Dodano mechanizm ponownego próby podczas inicjowania połączenia UiAutomation (048caf).
  • Usunięto możliwy NPE z powodu węzłów nullowych w UiDevice#dumpWindowHierarchy (b725eb).
  • Usunięto nieoczekiwane błędy występujące podczas wysyłania zapytań lub obsługi wyświetlaczy prywatnych (985db6, 7053d4).

Wersja 2.3.0-alpha03

19 kwietnia 2023 r.

Element androidx.test.uiautomator:uiautomator:2.3.0-alpha03 został zwolniony. Wersja 2.3.0-alpha03 zawiera te commity.

Zmiany w interfejsie API

  • Udostępniono interfejs Condition, aby umożliwić tworzenie niestandardowych warunków oczekiwania zamiast polegania wyłącznie na wbudowanych elementach w Until. Zaktualizowano metody UiDevice#waitUiObject2#wait, aby obsługiwały ten interfejs (27c0ea).
  • Dodano UiObject2#scrollUntil, aby umożliwić przewijanie do momentu spełnienia warunku i uzyskania zgodności z UiScrollable (099d6e).
  • Dodaliśmy UiDevice#setOrientationPortraitsetOrientationLandscape, aby ułatwić rotację na różnych typach urządzeń (e13cb7).
  • Dodano UiObject2#setGestureMarginPercent, aby umożliwić ustawianie marginesów względem rozmiaru obiektu. (Ib8c77)

Poprawki błędów

  • Naprawiono metody UiScrollable, które czasami używają nieprawidłowych współrzędnych w pakietach SDK 18–22 (b53ece).
  • Usunęliśmy błąd, który powodował, że funkcje UiObject2#setTextclearText nie mogły modyfikować tekstu w SDK 18 i 19 (77e41d).
  • Naprawiono błąd polegający na tym, że instrukcje UiWatcher nie były wykonywane we właściwej kolejności (c85f92).
  • Rozwiązaliśmy problem polegający na tym, że po zmianie orientacji UiDevice urządzenie mogło nie zakończyć obracania (c6cea0).
  • Zwiększona niezawodność długich kliknięć, przeciągnięć i zbliżeń (49572b, 3c619a).

Wersja 2.3.0-alpha02

11 stycznia 2023 r.

Element androidx.test.uiautomator:uiautomator:2.3.0-alpha02 został zwolniony. Wersja 2.3.0-alpha02 zawiera te commity.

Zmiany w interfejsie API

  • Zmieniliśmy sposób rejestrowania w bibliotece, aby zapewnić więcej informacji, ostrzeżenia o potencjalnych problemach i zwiększoną spójność.
  • Dodano UiDevice#pressKeyCodes, aby umożliwić jednoczesne naciskanie wielu klawiszy, np. naciśnięcie przycisków POWER i VOLUME_DOWN w celu zrobienia zrzutu ekranu (22e525).
  • Dodano UiDevice#setCompressedLayoutHierarchy i wycofano UiDevice#setCompressedLayoutHeirarchy, aby naprawić błąd w nazwie metody (4e2f65).
  • Oznaczone UiAutomatorInstrumentationTestRunner jako wycofane, ponieważ obsługuje wycofane UiAutomatorTestCase i nie jest już potrzebne (be6c85).
  • Zaktualizowano opóźnienie między UiObject2 MotionEvents do podwójnej częstotliwości odświeżania wyświetlacza, aby lepiej emulować gesty użytkownika (454450).
  • Dodano obsługę tekstów wielowierszowych i dopasowania opisu (1625e6, b/255787130).

Poprawki błędów

  • Rozwiązano problem z wyjątkami StaleObjectException, które sporadycznie występowały podczas wykonywania zapytań lub oczekiwania na obiekty (4cbcc0).
  • Naprawiono wartości zwracane funkcji UiScrollable#scrollToBeginning, scrollToEnd, flingToBeginningflingToEnd, które nie określały, czy osiągnięto początek lub koniec (d33e06).
  • Naprawiono metody UiScrollable#scrollForwardscrollBackward, które ignorowały skonfigurowany czas oczekiwania (29e4f3).
  • Rozwiązano problem polegający na tym, że konstruktor kopiujący BySelector nie obsługiwał selektorów głębokości (6c7b91).
  • Naprawiono obsługę nieprawidłowych wartości procentowych w elementach UiObject#pinchInpinchOut (01b973).
  • Rozwiązaliśmy rzadki problem, który powodował utratę obsługi wielu okien po zresetowaniu podstawowego połączenia UiAutomation (1bb956).

Wersja 2.3.0-alpha01

7 września 2022 roku

Element androidx.test.uiautomator:uiautomator:2.3.0-alpha01 został zwolniony. Wersja 2.3.0-alpha01 zawiera te commity.

Zmiany w interfejsie API

  • Dodano adnotacje nullowości wszystkich publicznych metod.
  • Przełączenie wstrzykiwania MotionEvent na asynchroniczne z krótkim opóźnieniem w celu płynniejszego wykonywania gestów UiObject2.
  • Zmniejszono interwał odpytywania w czasie oczekiwania z 1000 ms do 100 ms.
  • Zaktualizowano UiDevice#wakeUpUiDevice#sleep, aby używać KEYCODE_WAKEUPKEYCODE_SLEEP na urządzeniach, które zastępują przycisk zasilania.
  • Dodaliśmy UiObject2#getDisplayId oraz obsługę znajdowania obiektów i zarządzania nimi na wielu wyświetlaczach.
  • Dodano metody UiObject#clickUiObject2#clickAndWait do klikania punktu za pomocą jego współrzędnych.

Poprawki błędów

  • Rozwiązaliśmy problem polegający na tym, że obliczenia rozmiaru wyświetlacza były czasami nieprawidłowe i mogły ignorować części ekranu, zwłaszcza w trybie wielookiennym (Ifc016c).
  • Naprawiono skalowanie zrzutów ekranu w UiDevice#takeScreenshot (Id80ad6).
  • Zwiększono niezawodność funkcji Until.scrollFinishedUiObject2#scroll (I7b0595).
  • Naprawiono ostrzeżenia IncorrectContextUseViolation w trybie rygorystycznym (Iffa6a0).