Test Uiautomator

  
Platforma do funkcjonalnego testowania interfejsu w różnych aplikacjach
Najnowsza aktualizacja Wersja stabilna Wersja kandydująca do publikacji Wersja beta Wersja alfa
1 lipca 2026 r. 2.4.0 - - -

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"
}

Kotlin

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

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. Jeśli odkryjesz nowe problemy lub masz pomysły na ulepszenie tej biblioteki, daj nam znać. Zanim utworzysz nowy problem, zapoznaj się z istniejącymi problemami w tej bibliotece. Możesz oddać głos na istniejący problem, klikając przycisk gwiazdki.

Utwórz nowy problem

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

Wersja 2.4

Wersja 2.4.0

1 lipca 2026 r.

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

Ważne zmiany od wersji 2.3.0:

Zestaw interfejsów API UiAutomator został gruntownie przebudowany, aby zapewnić:

  • Dedykowany zakres testów uiAutomator umożliwiający tworzenie bardziej przejrzystego i ekspresyjnego kodu testowego.
  • Metody takie jak onElement, onElements i onElementOrNull do znajdowania elementów interfejsu za pomocą jasnych predykatów.
  • Wbudowany mechanizm oczekiwania na elementy warunkowe onElement*(timeoutMs: Long = 10000).
  • Jawne zarządzanie stanem aplikacji, np. waitForStable i waitForAppToBeVisible.
  • Bezpośrednia interakcja z węzłami okien ułatwień dostępu w scenariuszach testowania wielu okien.
  • Wbudowane funkcje robienia zrzutów ekranu i ResultsReporter do testowania wizualnego i debugowania.

Aby rozpocząć korzystanie z nowych interfejsów API, zapoznaj się z przewodnikiem UiAutomator 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 zatwierdzenia.

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

Poprawki błędów

  • Naprawiliśmy problem polegający na tym, że UiObject2#scrollToElementOrNull zgłaszała wyjątek zamiast zwracać wartość null, i zaktualizowaliśmy jej typ zwracany (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 zatwierdzenia.

Zmiany w interfejsie API

  • Polecenia bezstanowe są teraz pojedynczymi instancjami. (I3394c, b/429173157)
  • Zaktualizowaliśmy interfejs API RecorderCommands. (Ie09e8, b/429173157)
  • Uprościliśmy 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 zatwierdzenia.

Zmiany w interfejsie API

  • Zmieniliśmy oczekiwanie startActivity na oczekiwanie na nowe okno. Dzięki temu uruchamianie jest na ogół synchroniczne, a przyszłe wersje Macrobenchmark będą mogły konfigurować wykrywanie zakończenia uruchamiania. (I35da6, Id6e6f, b/440021797)
  • Usunęliśmy 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 zatwierdzenia.

Nowe funkcje

  • Dodaliśmy interfejsy API oparte na oknach, aby ułatwić testowanie wielu okien. Na przykład za pomocą metody UiDevice#findWindow można teraz znaleźć konkretne okno UiWindow zgodnie z selektorem 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 zatwierdzenia.

Zmiany w interfejsie API

  • Dodaliśmy metodę 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 zatwierdzenia.

Zmiany w interfejsie API

  • Zmieniliśmy 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 zatwierdzenia.

Poprawki błędów

  • Naprawiliśmy problem polegający na tym, że waitForStableInActiveWindow w niektórych przypadkach zgłaszała 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 zatwierdzenia.

Nowe funkcje

  • Wstępny kształt nowego interfejsu API Uiautomator. Zakres 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 przed użyciem AccessibilityNodeInfo#getText i sugerujące użycie textAsString.

Zmiany w interfejsie API

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

Poprawki błędów

  • Naprawiliśmy obsługę klawiszy meta w metodzie UiDevice#pressKeyCodes. (I73f80).
  • Zaktualizowaliśmy UiDevice#getWindowRoots, aby zawsze zwracało 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 metody 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 zatwierdzenia.

Zmiany w interfejsie API

  • Oznaczyliśmy metody Configurator#getKeyInjectionDelay i setKeyInjectionDelay jako przestarzałe, ponieważ parametr nie jest już używany. Tekst jest teraz zawsze wstawiany bezpośrednio, a nie przez naciśnięcia klawiszy. (I3bcc5).

Poprawki błędów

  • Zaktualizowaliśmy opóźnienie między zdarzeniami ruchu UiObject2, aby uwzględnić dynamiczną częstotliwość odświeżania (np. płynny wyświetlacz) (I43f12).
  • Zmniejszyliśmy niestabilność spowodowaną nieaktualnymi węzłami ułatwień dostępu w niektórych interfejsach, okresowo unieważniając pamięć podręczną ułatwień dostępu (I3be25).
  • Rozwiązaliśmy problem polegający na tym, że podczas wywoływania metod toString lub hashCode w nieaktualnym obiekcie UiObject2 występowały wyjątki StaleObjectException. (I38ea1).
  • Zwiększyliśmy wydajność UiWatcher, pomijając niepotrzebne wywołania waitForIdle. (I8c65e).
  • Poprawiliśmy nieścisłości w dokumentacji 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 zatwierdzenia.

Ważne zmiany od wersji 2.2.0

  • Obsługa wielu wyświetlaczy: dodaliśmy obsługę znajdowania obiektów na wielu wyświetlaczach i wykonywania na nich działań oraz metody UiDevice do zarządzania wyświetlaczami dodatkowymi (Ie6544, I912cd).
  • Nowe selektory:
    • Dodaliśmy metodę By.displayId, aby wybierać obiekty według ich identyfikatora wyświetlacza (I1825b).
    • Dodaliśmy metody By.hasParent i By.hasAncestor, aby wybierać obiekty według ich elementów nadrzędnych (I93c36).
    • Dodaliśmy By.hint metody, aby wybierać obiekty według ich tekstu podpowiedzi (Idd345).
  • Warunki niestandardowe: udostępniliśmy interfejs Condition, aby obsługiwać niestandardowe warunki oczekiwania, i dodaliśmy 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.
    • Zaktualizowaliśmy wstawianie MotionEvent, aby zwiększyć dokładność (678ca3) i lepiej emulować gesty użytkownika (454450).
    • Zwiększyliśmy niezawodność przewijania (I7b059), obracania (c6cea0), długich kliknięć (49572b), uszczypnięć (3c619a) i innych działań.

Wersja 2.3.0-rc01

7 lutego 2024 r.

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

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

Zmiany w interfejsie API

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

Poprawki błędów

  • Ulepszyliśmy 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 zatwierdzenia.

Zmiany w interfejsie API

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

Poprawki błędów

  • Dodaliśmy 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 z możliwym wyjątkiem NPE, jeśli podczas zrzucania węzłów nie można określić identyfikatora wyświetlacza (Icafcb).
  • Dodaliśmy ostrzeżenie podczas wykonywania kliknięć lub przewijania obiektów, których nie można kliknąć ani przewinąć (I4a5d9).
  • Zmniejszyliśmy 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 zatwierdzenia.

Zmiany w interfejsie API

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

Poprawki błędów

  • Zaktualizowaliśmy MotionEvent wstawianie, aby zmniejszyć niestabilność przez nadanie priorytetu dokładności gestu zamiast szybkości (678ca3).
  • Dodaliśmy śledzenie do metod wymagających dużej ilości zasobów, aby identyfikować wąskie gardła wydajności (d17de3).
  • Dodaliśmy mechanizm ponawiania podczas inicjowania połączenia UiAutomation (048caf).
  • Rozwiązaliśmy problem z możliwym wyjątkiem NPE spowodowanym przez węzły o wartości null w UiDevice#dumpWindowHierarchy (b725eb).
  • Rozwiązaliśmy problem z nieoczekiwanymi błędami podczas wysyłania zapytań do wyświetlaczy prywatnych lub wykonywania na nich działań (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 zatwierdzenia.

Zmiany w interfejsie API

  • Udostępniliśmy interfejs Condition, aby umożliwić stosowanie niestandardowych warunków oczekiwania zamiast polegania wyłącznie na wbudowanych warunkach w Until, i zaktualizowaliśmy metody UiDevice#wait i UiObject2#wait, aby akceptowały ten interfejs (27c0ea).
  • Dodaliśmy UiObject2#scrollUntil, aby obsługiwać przewijanie do momentu spełnienia warunku i osiągnąć równość z UiScrollable (099d6e).
  • Dodaliśmy UiDevice#setOrientationPortrait i setOrientationLandscape, aby ułatwić obracanie na różnych typach urządzeń (e13cb7).
  • Dodaliśmy metodę 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 elementy 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ększyliśmy 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 zatwierdzenia.

Zmiany w interfejsie API

  • Przebudowaliśmy logowanie w całej bibliotece, aby dostarczać więcej informacji, ostrzegać o możliwych problemach i zwiększyć spójność.
  • Dodaliśmy 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).
  • Dodaliśmy UiDevice#setCompressedLayoutHierarchy i oznaczyliśmy UiDevice#setCompressedLayoutHeirarchy jako przestarzałe, aby poprawić błąd w nazwie metody (4e2f65).
  • Oznaczyliśmy metodę UiAutomatorInstrumentationTestRunner jako przestarzałą, ponieważ obsługuje ona przestarzałe metody UiAutomatorTestCase i nie jest już potrzebna (be6c85).
  • Zaktualizowaliśmy opóźnienie między UiObject2 MotionEvent do dwukrotności częstotliwości odświeżania wyświetlacza, aby lepiej emulować gesty użytkownika (454450).
  • Dodaliśmy 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 metod 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 zatwierdzenia.

Zmiany w interfejsie API

  • Dodaliśmy adnotacje dotyczące wartości null do wszystkich metod publicznych.
  • Przełączyliśmy wstawianie MotionEvent na asynchroniczne z krótkim opóźnieniem, aby zapewnić płynniejsze gesty UiObject2.
  • Zmniejszyliśmy interwał sondowania podczas oczekiwania z 1000 ms do 100 ms.
  • Zaktualizowaliśmy metody UiDevice#wakeUp i UiDevice#sleep, aby używały kodów KEYCODE_WAKEUP i KEYCODE_SLEEP w celu obsługi urządzeń, które zastępują przycisk zasilania.
  • Dodaliśmy metodę UiObject2#getDisplayId i obsługę znajdowania obiektów na wielu wyświetlaczach oraz zarządzania nimi.
  • Dodaliśmy 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ększyliśmy niezawodność metod Until.scrollFinished i UiObject2#scroll (I7b0595).
  • Rozwiązaliśmy problem z ostrzeżeniami dotyczącymi trybu ścisłego IncorrectContextUseViolation (Iffa6a0).