Test Uiautomator

  
Framework do funkcjonalnego testowania interfejsu użytkownika w różnych aplikacjach
Najnowsza aktualizacja Wersja stabilna Wersja kandydująca do publikacji Wersja beta Wersja alfa
17 czerwca 2026 r. 2.3.0 2.4.0-rc01 - -

Deklarowanie zależności

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

Dodaj zależności od potrzebnych artefaktów w pliku build.gradle aplikacji lub modułu:

Odlotowe

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

Kotlin

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

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

Prześlij opinię

Twoja opinia pomoże nam ulepszyć Jetpacka. Daj nam znać, jeśli znajdziesz nowe problemy lub masz pomysły na ulepszenie tej biblioteki. Zanim utworzysz nowy problem, zapoznaj się z istniejącymi problemami w tej bibliotece. Możesz dodać swój głos do istniejącego problemu, klikając przycisk gwiazdki.

Utwórz nowy problem

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

Test Uiautomator Shell w wersji 1.0

Wersja 1.0.0-alpha03

3 grudnia 2025 r.

Ukazała się wersja androidx.test.uiautomator:uiautomator-shell:1.0.0-alpha03. Wersja 1.0.0-alpha03 zawiera te commity.

Zmiany w interfejsie API

Wersja 1.0.0-alpha02

13 sierpnia 2025 r.

Ukazała się wersja androidx.test.uiautomator:uiautomator-shell:1.0.0-alpha02. Wersja 1.0.0-alpha02 zawiera te commity.

Wersja 1.0.0-alpha01

18 czerwca 2025 r.

Ukazała się wersja androidx.test.uiautomator:uiautomator-shell:1.0.0-alpha01. Wersja 1.0.0-alpha01 zawiera te commity.

Nowe funkcje

  • Pierwsza wersja alfa biblioteki powłoki ui-automator do wykonywania poleceń powłoki jako użytkownik powłoki. Ta biblioteka umożliwia odczytywanie stdout, stderr i zapisywanie w stdin procesu sh uruchomionego przez powłokę. W rzeczywistości przenosi ona wstecznie UiAutomation#executeShellCommandRwe wprowadzone w interfejsie API 34.

Wersja 2.4

Wersja 2.4.0-rc01

17 czerwca 2026 r.

Ukazały się wersje androidx.test.uiautomator:uiautomator:2.4.0-rc01, androidx.test.uiautomator:uiautomator-shell:2.4.0-rc01 i androidx.test.uiautomator:uiautomator-shell-android:2.4.0-rc01. Wersja 2.4.0-rc01 zawiera te commity.

Wersja 2.4.0-beta02

11 marca 2026 r.

Ukazały się wersje androidx.test.uiautomator:uiautomator:2.4.0-beta02 i androidx.test.uiautomator:uiautomator-shell:2.4.0-beta02. Wersja 2.4.0-beta02 zawiera te commity.

Poprawki błędów

  • Rozwiązaliśmy problem polegający na tym, że UiObject2#scrollToElementOrNull zgłaszał wyjątek zamiast zwracać wartość null, i zaktualizowaliśmy jego zwracany typ (If0109, b/479892735)

Wersja 2.4.0-beta01

11 lutego 2026 r.

Ukazały się wersje androidx.test.uiautomator:uiautomator:2.4.0-beta01 i androidx.test.uiautomator:uiautomator-shell:2.4.0-beta01. Wersja 2.4.0-beta01 zawiera te commity.

Zmiany w interfejsie API

  • Polecenia bezstanowe są teraz pojedynczymi instancjami. (I3394c, b/429173157)
  • Zaktualizowano interfejs API RecorderCommands. (Ie09e8, b/429173157)
  • Uproszczono interfejs API RecorderCommands, aby miał dobrze zdefiniowany cykl życia. (I30f89, b/444305673)

Wersja 2.4.0-alpha07

3 grudnia 2025 r.

Ukazała się wersja androidx.test.uiautomator:uiautomator:2.4.0-alpha07. Wersja 2.4.0-alpha07 zawiera te commity.

Zmiany w interfejsie API

  • Zmieniono oczekiwanie startActivity na oczekiwanie na nowe okno. Dzięki temu uruchamianie jest na ogół synchroniczne i umożliwia przyszłym wersjom Macrobenchmark konfigurowanie wykrywania zakończenia uruchamiania. (I35da6, Id6e6f, b/440021797)
  • Usunięto interfejs API bez jawnej nazwy pakietu w UiAutomatorTestScope. (I8c285, b/413417205)

Wersja 2.4.0-alpha06

13 sierpnia 2025 r.

Ukazała się wersja androidx.test.uiautomator:uiautomator:2.4.0-alpha06. Wersja 2.4.0-alpha06 zawiera te commity.

Nowe funkcje

  • Dodano interfejsy API oparte na oknach, które ułatwiają testowanie w wielu oknach. Na przykład UiDevice#findWindow można teraz używać do znajdowania konkretnego UiWindow zgodnie z ByWindowSelector utworzonym za pomocą metod fabrycznych By.Window. (I359c4, I40528, I8c963)

Wersja 2.4.0-alpha05

18 czerwca 2025 r.

Ukazała się wersja androidx.test.uiautomator:uiautomator:2.4.0-alpha05. Wersja 2.4.0-alpha05 zawiera te commity.

Zmiany w interfejsie API

  • Dodano UiObject2#waitForStable jako skrót do UiObject2#accessibilityNodeInfo#waitForStable()

Wersja 2.4.0-alpha04

4 czerwca 2025 r.

Ukazała się wersja androidx.test.uiautomator:uiautomator:2.4.0-alpha04. Wersja 2.4.0-alpha04 zawiera te commity.

Zmiany w interfejsie API

  • Zmieniono nazwę onView na onElement, aby wyjaśnić, że działa ona z Compose (I53a3b, b/419006806)

Poprawki błędów

Wersja 2.4.0-alpha03

20 maja 2025 r.

Ukazała się wersja androidx.test.uiautomator:uiautomator:2.4.0-alpha03. Wersja 2.4.0-alpha03 zawiera te commity.

Poprawki błędów

  • Rozwiązaliśmy problem polegający na tym, że w niektórych przypadkach waitForStableInActiveWindow zgłaszał wyjątek NPE (Ibf50f, b/417046391).

Wersja 2.4.0-alpha02

7 maja 2025 r.

Ukazała się wersja androidx.test.uiautomator:uiautomator:2.4.0-alpha02. Wersja 2.4.0-alpha02 zawiera te commity.

Nowe funkcje

  • Wstępny kształt nowego interfejsu API Uiautomator. UiAutomatorTestScope można utworzyć za pomocą fabryki uiAutomator, która zapewnia dostęp do nowych interfejsów API onView.
  • Wstępne reguły Lint ostrzegające o użyciu AccessibilityNodeInfo#getText i sugerujące użycie textAsString.

Zmiany w interfejsie API

  • Dodano Configurator#setDefaultDisplayId, aby ustawić identyfikator wyświetlacza, do którego mają być ograniczone wszystkie wyszukiwania (Icdf17).
  • Dla wygody zmieniono Searchable (interfejs współdzielony przez UiDevice i UiObject2) na publiczny (I67f18).

Poprawki błędów

  • Naprawiono obsługę klawiszy meta 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 niepełne (I60dd3, If4edd).
  • Rozwiązaliśmy rzadki problem z nieskończoną pętlą podczas wywoływania UiDevice#scrollUntil (I39989).

Wersja 2.4.0-alpha01

26 czerwca 2024 r.

Ukazała się wersja androidx.test.uiautomator:uiautomator:2.4.0-alpha01. Wersja 2.4.0-alpha01 zawiera te commity.

Zmiany w interfejsie API

  • Wycofano Configurator#getKeyInjectionDelay i setKeyInjectionDelay, ponieważ parametr nie jest już używany, a tekst jest zawsze wstawiany bezpośrednio, a nie przez naciśnięcia klawiszy. (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).
  • Zmniejszono niestabilność spowodowaną 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).
  • Rozwiązaliśmy problem polegający na tym, że podczas wywoływania toString lub hashCode w nieaktualnym UiObject2 występowały wyjątki StaleObjectException. (I38ea1).
  • Zwiększono wydajność UiWatcher przez pomijanie niepotrzebnych wywołań waitForIdle. (I8c65e).
  • Poprawiono nieścisłości w javadoc, zwłaszcza aby wyjaśnić, kiedy używany jest każdy parametr Configurator. (Ie10b1, I71631).

Wersja 2.3.0

Wersja 2.3.0

21 lutego 2024 r.

Ukazała się wersja androidx.test.uiautomator:uiautomator:2.3.0. 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 obsługi obiektów na wielu wyświetlaczach oraz metody UiDevice do zarządzania wyświetlaczami dodatkowymi (Ie6544, I912cd).
  • Nowe selektory:
    • Dodano By.displayId, aby wybierać obiekty według ich identyfikatora wyświetlacza (I1825b).
    • Dodano By.hasParent i By.hasAncestor, aby wybierać obiekty według ich elementów nadrzędnych (I93c36).
    • Dodano metody By.hint, aby wybierać obiekty według ich tekstu podpowiedzi (Idd345).
  • Warunki niestandardowe: udostępniono interfejs Condition, aby obsługiwać niestandardowe warunki oczekiwania, oraz dodano odpowiednie metody UiDevice#wait, UiObject2#wait i UiObject2#scrollUntil (27c0ea, 099d6e).
  • Poprawki błędów i niezawodność:
    • 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 (Ifc016). Może być konieczne dostosowanie współrzędnych i przesunięć używanych w testach.
    • Zaktualizowano wstawianie 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), uszczypnięć (3c619a) i innych.

Wersja 2.3.0-rc01

7 lutego 2024 r.

Ukazała się wersja androidx.test.uiautomator:uiautomator:2.3.0-rc01 bez zmian. Wersja 2.3.0-rc01 zawiera te commity.

Wersja 2.3.0-beta01

13 grudnia 2023 r.

Ukazała się wersja androidx.test.uiautomator:uiautomator:2.3.0-beta01. Wersja 2.3.0-beta01 zawiera te commity.

Zmiany w interfejsie API

  • Dla zachowania spójności zmieniono nazwy metod marginesów opartych na procentach UiObject2 na setGestureMarginPercentage i setGestureMarginsPercentage (I24435)

Poprawki błędów

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

Wersja 2.3.0-alpha05

1 listopada 2023 roku

Ukazała się wersja androidx.test.uiautomator:uiautomator:2.3.0-alpha05. Wersja 2.3.0-alpha05 zawiera te commity.

Zmiany w interfejsie API

  • Dodano UiObject2#getDrawingOrder, aby udostępnić informacje o kolejności rysowania (z-index). (I5dfa4).
  • Dodano metody UiDevice do pobierania, ustawiania, zamrażania i odblokowywania obrotu wyświetlaczy dodatkowych. (I912cd).

Poprawki błędów

  • Dodano ponawianie do UiObject2#scrollUntil, gdy nie można było wykryć końca przewijania (Ibac6f).
  • Rozwiązaliśmy problem polegający na tym, że w przypadku ponownego utworzenia UiDevice używał nieaktualnej instancji Instrumentation (I18cae).
  • Rozwiązaliśmy problem polegający na tym, że podczas zrzucania węzłów mógł wystąpić wyjątek NPE, jeśli nie można było określić identyfikatora wyświetlacza (Icafcb).
  • Dodano ostrzeżenie podczas klikania lub przewijania obiektów, których nie można kliknąć ani przewinąć (I4a5d9).
  • Zmniejszono domyślną szybkość przewijania UiObject2, aby zwiększyć niezawodność (I5e071).

Wersja 2.3.0-alpha04

26 lipca 2023 r.

Ukazała się wersja androidx.test.uiautomator:uiautomator:2.3.0-alpha04. Wersja 2.3.0-alpha04 zawiera te commity.

Zmiany w interfejsie API

  • Dodano By.hasParent i By.hasAncestor, aby obsługiwać znajdowanie obiektów według ich elementów nadrzędnych (I93c36).
  • Dodano UiObject2#getHint, aby pobierać tekst podpowiedzi obiektu, oraz metody By.hint, aby wybierać obiekty według ich tekstu podpowiedzi (Idd345).
  • Dodano By.displayId, aby obsługiwać wybieranie obiektów według wyświetlacza, na którym się znajdują (I1825b).
  • Dodano metody UiDevice#getDisplayHeight(int) i UiDevice#getDisplayWidth(int), aby znajdować wymiary wyświetlacza według jego identyfikatora (Ie6544).
  • Ponownie dodano metody wait(SearchCondition, long) i wait(UiObject2Condition, long) w celu zapewnienia zgodności wstecznej (Iebfda).
  • Zmieniono UiDevice#executeShellCommand na publiczny, ale odradzamy jego używanie (Ic48a1).

Poprawki błędów

  • Zaktualizowano wstawianie MotionEvent, aby zmniejszyć niestabilność przez nadanie priorytetu dokładności gestu nad szybkością (678ca3).
  • Dodano śledzenie do metod wymagających dużej ilości zasobów, aby identyfikować wąskie gardła wydajności (d17de3).
  • Dodano mechanizm ponawiania podczas inicjowania połączenia UiAutomation (048caf).
  • Rozwiązaliśmy problem polegający na tym, że w UiDevice#dumpWindowHierarchy mógł wystąpić wyjątek NPE z powodu węzłów o wartości null (b725eb).
  • Rozwiązaliśmy problem polegający na tym, że podczas wysyłania zapytań do wyświetlaczy prywatnych lub wykonywania na nich operacji występowały nieoczekiwane błędy (985db6, 7053d4).

Wersja 2.3.0-alpha03

19 kwietnia 2023 r.

Ukazała się wersja androidx.test.uiautomator:uiautomator:2.3.0-alpha03. Wersja 2.3.0-alpha03 zawiera te commity.

Zmiany w interfejsie API

  • Udostępniono interfejs Condition, aby umożliwić niestandardowe warunki oczekiwania zamiast polegać wyłącznie na wbudowanych w Until, oraz zaktualizowano metody UiDevice#wait i UiObject2#wait, aby akceptowały ten interfejs (27c0ea).
  • Dodano UiObject2#scrollUntil, aby obsługiwać przewijanie do momentu spełnienia warunku i osiągnąć równość z UiScrollable (099d6e).
  • Dodano UiDevice#setOrientationPortrait i setOrientationLandscape, aby ułatwić obracanie na różnych typach urządzeń (e13cb7).
  • Dodano UiObject2#setGestureMarginPercent, aby obsługiwać ustawianie marginesów względem rozmiaru obiektu. (Ib8c77)

Poprawki błędów

  • Rozwiązaliśmy problem polegający na tym, że metody UiScrollable czasami używały nieprawidłowych współrzędnych w pakietach SDK od 18 do 22 (b53ece).
  • Rozwiązaliśmy problem polegający na tym, że UiObject2#setText i clearText nie modyfikowały tekstu w pakietach SDK 18 i 19 (77e41d).
  • Rozwiązaliśmy problem polegający na tym, że UiWatcher nie były wykonywane w odpowiedniej kolejności (c85f92).
  • Rozwiązaliśmy problem polegający na tym, że po zmianie orientacji UiDevice obrót urządzenia mógł nie być jeszcze zakończony (c6cea0).
  • Zwiększono niezawodność długich kliknięć, przeciągnięć i uszczypnięć (49572b, 3c619a).

Wersja 2.3.0-alpha02

11 stycznia 2023 r.

Ukazała się wersja androidx.test.uiautomator:uiautomator:2.3.0-alpha02. Wersja 2.3.0-alpha02 zawiera te commity.

Zmiany w interfejsie API

  • Przeprojektowano logowanie w całej bibliotece, aby dostarczać więcej informacji, ostrzegać o możliwych problemach i zwiększać spójność.
  • Dodano UiDevice#pressKeyCodes, aby obsługiwać jednoczesne naciskanie wielu klawiszy, np. naciśnięcie przycisku zasilania i zmniejszania głośności w celu zrobienia zrzutu ekranu (22e525).
  • Dodano UiDevice#setCompressedLayoutHierarchy i wycofano UiDevice#setCompressedLayoutHeirarchy, aby poprawić błąd w nazwie metody (4e2f65).
  • Oznaczono UiAutomatorInstrumentationTestRunner jako wycofany, ponieważ obsługuje wycofane UiAutomatorTestCase i nie jest już potrzebny (be6c85).
  • Zaktualizowano opóźnienie między UiObject2 MotionEvent do dwukrotności częstotliwości odświeżania wyświetlacza, aby lepiej emulować gesty użytkownika (454450).
  • Dodano obsługę dopasowywania tekstu i opisu wielowierszowego (1625e6, b/255787130).

Poprawki błędów

  • Rozwiązaliśmy problem polegający na tym, że podczas wysyłania zapytań do obiektów lub oczekiwania na nie czasami zgłaszane były wyjątki StaleObjectException (4cbcc0).
  • Rozwiązaliśmy problem polegający na tym, że wartości zwracane przez UiScrollable#scrollToBeginning, scrollToEnd, flingToBeginning i flingToEnd nie wskazywały, czy osiągnięto początek lub koniec (d33e06).
  • Rozwiązaliśmy problem polegający na tym, że metody UiScrollable#scrollForward i scrollBackward ignorowały skonfigurowany limit czasu (29e4f3).
  • Rozwiązaliśmy problem polegający na tym, że konstruktor kopiujący BySelector nie obsługiwał selektorów głębokości (6c7b91).
  • Rozwiązaliśmy problem z obsługą nieprawidłowych wartości procentowych w UiObject#pinchIn i pinchOut (01b973).
  • Rozwiązaliśmy rzadki problem polegający na tym, że w przypadku zresetowania połączenia UiAutomation tracona była obsługa wielu okien (1bb956).

Wersja 2.3.0-alpha01

7 września 2022 roku

Ukazała się wersja androidx.test.uiautomator:uiautomator:2.3.0-alpha01. Wersja 2.3.0-alpha01 zawiera te commity.

Zmiany w interfejsie API

  • Dodano adnotacje o wartości null do wszystkich metod publicznych.
  • Zmieniono wstawianie MotionEvent na asynchroniczne z krótkim opóźnieniem, aby zapewnić płynniejsze gesty UiObject2.
  • Zmniejszono interwał sondowania podczas oczekiwania z 1000 ms do 100 ms.
  • Zaktualizowano UiDevice#wakeUp i UiDevice#sleep, aby używać KEYCODE_WAKEUP i KEYCODE_SLEEP do obsługi urządzeń, które zastępują przycisk zasilania.
  • Dodano UiObject2#getDisplayId oraz obsługę znajdowania obiektów na wielu wyświetlaczach i zarządzania nimi.
  • Dodano metody UiObject#click i UiObject2#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 wielu okien (Ifc016c).
  • Rozwiązaliśmy problem ze skalowaniem zrzutów ekranu w UiDevice#takeScreenshot (Id80ad6).
  • Zwiększono niezawodność Until.scrollFinished i UiObject2#scroll (I7b0595).
  • Rozwiązaliśmy problem z ostrzeżeniami trybu ścisłego IncorrectContextUseViolation (Iffa6a0).