Test Uiautomator
| 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.
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
uiAutomatorumożliwiający tworzenie bardziej przejrzystego i ekspresyjnego kodu testowego. - Metody takie jak
onElement,onElementsionElementOrNulldo 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.
waitForStableiwaitForAppToBeVisible. - Bezpośrednia interakcja z węzłami okien ułatwień dostępu w scenariuszach testowania wielu okien.
- Wbudowane funkcje robienia zrzutów ekranu i
ResultsReporterdo 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#scrollToElementOrNullzgł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
startActivityna 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#findWindowmożna teraz znaleźć konkretne oknoUiWindowzgodnie z selektoremByWindowSelectorutworzonym za pomocą metod fabrycznychBy.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#waitForStablejako skrót doUiObject2#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ę
onViewnaonElement, aby wyjaśnić, że działa ona z Compose (I53a3b, b/419006806).
Poprawki błędów
- Naprawiliśmy problem z metodą
waitForStableInActiveWindow(290457f1, b/420349130).
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
waitForStableInActiveWindoww 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. ZakresUiAutomatorTestScopemożna utworzyć za pomocą fabrykiuiAutomator, która zapewnia dostęp do nowych interfejsów APIonView. - Wstępne reguły Lint ostrzegające przed użyciem
AccessibilityNodeInfo#getTexti sugerujące użycietextAsString.
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 przezUiDeviceiUiObject2) 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#getKeyInjectionDelayisetKeyInjectionDelayjako 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
toStringlubhashCodew nieaktualnym obiekcieUiObject2występowały wyjątkiStaleObjectException. (I38ea1). - Zwiększyliśmy wydajność
UiWatcher, pomijając niepotrzebne wywołaniawaitForIdle. (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
UiDevicedo zarządzania wyświetlaczami dodatkowymi (Ie6544, I912cd). - Nowe selektory:
- Warunki niestandardowe: udostępniliśmy interfejs
Condition, aby obsługiwać niestandardowe warunki oczekiwania, i dodaliśmy odpowiednie metodyUiDevice#wait,UiObject2#waitiUiObject2#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
setGestureMarginPercentageisetGestureMarginsPercentage(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
UiDevicedo 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
UiDeviceużywał nieaktualnej instancjiInstrumentation(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.hasParentiBy.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 metodyBy.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)iUiDevice#getDisplayWidth(int), aby znajdować wymiary wyświetlacza według jego identyfikatora (Ie6544). - Ponownie dodaliśmy metody
wait(SearchCondition, long)iwait(UiObject2Condition, long)w celu zapewnienia zgodności wstecznej (Iebfda). - Zmieniliśmy
UiDevice#executeShellCommandna publiczną, ale odradzamy jej używanie zamiast ukrywania (Ic48a1).
Poprawki błędów
- Zaktualizowaliśmy
MotionEventwstawianie, 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 wUntil, i zaktualizowaliśmy metodyUiDevice#waitiUiObject2#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ść zUiScrollable(099d6e). - Dodaliśmy
UiDevice#setOrientationPortraitisetOrientationLandscape, 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
UiScrollableczasami 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#setTexticlearTextnie modyfikowały tekstu w pakietach SDK 18 i 19 (77e41d). - Rozwiązaliśmy problem polegający na tym, że elementy
UiWatchernie były wykonywane w odpowiedniej kolejności (c85f92). - Rozwiązaliśmy problem polegający na tym, że po zmianie orientacji
UiDeviceobró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#setCompressedLayoutHierarchyi oznaczyliśmyUiDevice#setCompressedLayoutHeirarchyjako przestarzałe, aby poprawić błąd w nazwie metody (4e2f65). - Oznaczyliśmy metodę
UiAutomatorInstrumentationTestRunnerjako przestarzałą, ponieważ obsługuje ona przestarzałe metodyUiAutomatorTestCasei nie jest już potrzebna (be6c85). - Zaktualizowaliśmy opóźnienie między
UiObject2MotionEventdo 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,flingToBeginningiflingToEndnie wskazywały, czy osiągnięto początek lub koniec (d33e06). - Rozwiązaliśmy problem polegający na tym, że metody
UiScrollable#scrollForwardiscrollBackwardignorowały skonfigurowany limit czasu (29e4f3). - Rozwiązaliśmy problem polegający na tym, że konstruktor kopiujący
BySelectornie obsługiwał selektorów głębokości (6c7b91). - Rozwiązaliśmy problem z obsługą nieprawidłowych wartości procentowych w
UiObject#pinchInipinchOut(01b973). - Rozwiązaliśmy rzadki problem polegający na tym, że w przypadku zresetowania połączenia
UiAutomationtracona 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
MotionEventna asynchroniczne z krótkim opóźnieniem, aby zapewnić płynniejsze gestyUiObject2. - Zmniejszyliśmy interwał sondowania podczas oczekiwania z 1000 ms do 100 ms.
- Zaktualizowaliśmy metody
UiDevice#wakeUpiUiDevice#sleep, aby używały kodówKEYCODE_WAKEUPiKEYCODE_SLEEPw celu obsługi urządzeń, które zastępują przycisk zasilania. - Dodaliśmy metodę
UiObject2#getDisplayIdi obsługę znajdowania obiektów na wielu wyświetlaczach oraz zarządzania nimi. - Dodaliśmy metody
UiObject#clickiUiObject2#clickAndWaitdo 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.scrollFinishediUiObject2#scroll(I7b0595). - Rozwiązaliśmy problem z ostrzeżeniami dotyczącymi trybu ścisłego
IncorrectContextUseViolation(Iffa6a0).