Test Uiautomator
| 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.
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
- Zmieniono
startActivityoczekiwanie na oczekiwanie na nowe okno (I35da6, b/440021797) - Zaktualizowano
screenSizePixelwRecorderCommands(If558c, b/429173157)
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#executeShellCommandRwewprowadzone 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#scrollToElementOrNullzgł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
startActivityna 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#findWindowmożna teraz używać do znajdowania konkretnegoUiWindowzgodnie zByWindowSelectorutworzonym 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 commity.
Zmiany w interfejsie API
- Dodano
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 commity.
Zmiany w interfejsie API
- Zmieniono nazwę
onViewnaonElement, aby wyjaśnić, że działa ona z Compose (I53a3b, b/419006806)
Poprawki błędów
- Naprawiono
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 commity.
Poprawki błędów
- Rozwiązaliśmy problem polegający na tym, że w niektórych przypadkach
waitForStableInActiveWindowzgł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.UiAutomatorTestScopemożna utworzyć za pomocą fabrykiuiAutomator, która zapewnia dostęp do nowych interfejsów APIonView. - Wstępne reguły Lint ostrzegające o użyciu
AccessibilityNodeInfo#getTexti sugerujące użycietextAsString.
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 przezUiDeviceiUiObject2) 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#getKeyInjectionDelayisetKeyInjectionDelay, 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
toStringlubhashCodew nieaktualnymUiObject2występowały wyjątkiStaleObjectException. (I38ea1). - Zwiększono wydajność
UiWatcherprzez 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
UiDevicedo zarządzania wyświetlaczami dodatkowymi (Ie6544, I912cd). - Nowe selektory:
- Warunki niestandardowe: udostępniono interfejs
Condition, aby obsługiwać niestandardowe warunki oczekiwania, oraz dodano 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.
- 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
UiObject2nasetGestureMarginPercentageisetGestureMarginsPercentage(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
UiDevicedo 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
UiDeviceużywał nieaktualnej instancjiInstrumentation(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.hasParentiBy.hasAncestor, aby obsługiwać znajdowanie obiektów według ich elementów nadrzędnych (I93c36). - Dodano
UiObject2#getHint, aby pobierać tekst podpowiedzi obiektu, oraz metodyBy.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)iUiDevice#getDisplayWidth(int), aby znajdować wymiary wyświetlacza według jego identyfikatora (Ie6544). - Ponownie dodano metody
wait(SearchCondition, long)iwait(UiObject2Condition, long)w celu zapewnienia zgodności wstecznej (Iebfda). - Zmieniono
UiDevice#executeShellCommandna 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#dumpWindowHierarchymó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 wUntil, oraz zaktualizowano metodyUiDevice#waitiUiObject2#wait, aby akceptowały ten interfejs (27c0ea). - Dodano
UiObject2#scrollUntil, aby obsługiwać przewijanie do momentu spełnienia warunku i osiągnąć równość zUiScrollable(099d6e). - Dodano
UiDevice#setOrientationPortraitisetOrientationLandscape, 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
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
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ę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#setCompressedLayoutHierarchyi wycofanoUiDevice#setCompressedLayoutHeirarchy, aby poprawić błąd w nazwie metody (4e2f65). - Oznaczono
UiAutomatorInstrumentationTestRunnerjako wycofany, ponieważ obsługuje wycofaneUiAutomatorTestCasei nie jest już potrzebny (be6c85). - Zaktualizowano opóźnienie między
UiObject2MotionEventdo 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,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 commity.
Zmiany w interfejsie API
- Dodano adnotacje o wartości null do wszystkich metod publicznych.
- Zmieniono wstawianie
MotionEventna asynchroniczne z krótkim opóźnieniem, aby zapewnić płynniejsze gestyUiObject2. - Zmniejszono interwał sondowania podczas oczekiwania z 1000 ms do 100 ms.
- Zaktualizowano
UiDevice#wakeUpiUiDevice#sleep, aby używaćKEYCODE_WAKEUPiKEYCODE_SLEEPdo obsługi urządzeń, które zastępują przycisk zasilania. - Dodano
UiObject2#getDisplayIdoraz obsługę znajdowania obiektów na wielu wyświetlaczach i zarządzania nimi. - Dodano 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ększono niezawodność
Until.scrollFinishediUiObject2#scroll(I7b0595). - Rozwiązaliśmy problem z ostrzeżeniami trybu ścisłego
IncorrectContextUseViolation(Iffa6a0).