Test Uiautomator

  
Framework do testowania funkcjonalnego interfejsu w różnych aplikacjach
Najnowsza aktualizacja Wersja stabilna Wersja kandydująca do publikacji Wersja beta Wersja Alfa
11 lutego 2026 r. 2.3.0 - 2.4.0-beta01 -

Deklarowanie zależności

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

Dodaj zależności dotyczące 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-beta01"
}

Kotlin

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

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 odkryjesz 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 oddać głos na istniejący problem, klikając przycisk gwiazdki.

Tworzenie nowego problemu

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.

Publikacja androidx.test.uiautomator:uiautomator-shell:1.0.0-alpha03 Wersja 1.0.0-alpha03 zawiera te zmiany.

Zmiany w interfejsie API

Wersja 1.0.0-alpha02

13 sierpnia 2025 r.

Publikacja androidx.test.uiautomator:uiautomator-shell:1.0.0-alpha02 Wersja 1.0.0-alpha02 zawiera te zmiany.

Wersja 1.0.0-alpha01

18 czerwca 2025 r.

Publikacja androidx.test.uiautomator:uiautomator-shell:1.0.0-alpha01 Wersja 1.0.0-alpha01 zawiera te zmiany.

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 standardowego wyjścia i standardowego wyjścia błędów oraz zapisywanie danych na standardowym wejściu procesu sh uruchomionego przez powłokę. W praktyce przenosi on wstecznie funkcję UiAutomation#executeShellCommandRwe wprowadzoną w interfejsie API 34.

Wersja 2.4

Wersja 2.4.0-beta01

11 lutego 2026 r.

Publikacja androidx.test.uiautomator:uiautomator:2.4.0-beta01androidx.test.uiautomator:uiautomator-shell:2.4.0-beta01 Wersja 2.4.0-beta01 zawiera te zmiany.

Zmiany w interfejsie API

Wersja 2.4.0-alpha07

3 grudnia 2025 r.

Publikacja androidx.test.uiautomator:uiautomator:2.4.0-alpha07 Wersja 2.4.0-alpha07 zawiera te zmiany.

Zmiany w interfejsie API

  • Zmieniono startActivity wait na wait for new window. Dzięki temu uruchamianie jest zwykle 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 wyraźnej nazwy pakietu w UiAutomatorTestScope. (I8c285, b/413417205)

Wersja 2.4.0-alpha06

13 sierpnia 2025 r.

Publikacja androidx.test.uiautomator:uiautomator:2.4.0-alpha06 Wersja 2.4.0-alpha06 zawiera te zmiany.

Nowe funkcje

  • Dodano interfejsy API oparte na oknach, aby ułatwić testowanie wielu okien, np. 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.

Publikacja androidx.test.uiautomator:uiautomator:2.4.0-alpha05 Wersja 2.4.0-alpha05 zawiera te zmiany.

Zmiany w interfejsie API

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

Wersja 2.4.0-alpha04

4 czerwca 2025 r.

Publikacja androidx.test.uiautomator:uiautomator:2.4.0-alpha04 Wersja 2.4.0-alpha04 zawiera te zmiany.

Zmiany w interfejsie API

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

Poprawki błędów

Wersja 2.4.0-alpha03

20 maja 2025 r.

Publikacja androidx.test.uiautomator:uiautomator:2.4.0-alpha03 Wersja 2.4.0-alpha03 zawiera te zmiany.

Poprawki błędów

  • Rozwiązanie problemu polegającego na tym, że w niektórych przypadkach funkcja waitForStableInActiveWindow zgłaszała błąd NPE (Ibf50f, b/417046391).

Wersja 2.4.0-alpha02

7 maja 2025 r.

Publikacja androidx.test.uiautomator:uiautomator:2.4.0-alpha02 Wersja 2.4.0-alpha02 zawiera te zmiany.

Nowe funkcje

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

Zmiany w interfejsie API

  • Dodano Configurator#setDefaultDisplayId, aby ustawić identyfikator wyświetlania i ograniczyć wszystkie wyszukiwania do (Icdf17).
  • Zmieniono interfejs Searchable (wspólny dla UiDeviceUiObject2) na publiczny dla wygody (I67f18).

Poprawki błędów

  • Poprawiliśmy obsługę klawiszy Meta w UiDevice#pressKeyCodes. (I73f80).
  • Zaktualizowano UiDevice#getWindowRoots, aby zawsze zwracać elementy główne w kolejności Z (I87426).
  • Rozwiązaliśmy problem, który powodował, że niektóre gesty były niekompletne (I60dd3, If4edd).
  • Usunęliśmy rzadki błąd nieskończonej pętli podczas wywoływania funkcji UiDevice#scrollUntil (I39989).

Wersja 2.4.0-alpha01

26 czerwca 2024 r.

Publikacja androidx.test.uiautomator:uiautomator:2.4.0-alpha01 Wersja 2.4.0-alpha01 zawiera te zmiany.

Zmiany w interfejsie API

  • Wycofano parametry Configurator#getKeyInjectionDelaysetKeyInjectionDelay, ponieważ nie są już używane. Tekst jest teraz zawsze wstawiany bezpośrednio, a nie przez naciśnięcie klawiszy. (I3bcc5).

Poprawki błędów

  • Zaktualizowano opóźnienie między UiObject2 zdarzeniami ruchu, aby uwzględnić dynamiczne częstotliwości odświeżania (np. płynny wyświetlacz) (I43f12).
  • Zmniejszono niestabilność wynikającą z nieaktualności węzła ułatwień dostępu w przypadku niektórych interfejsów, okresowo unieważniając pamięć podręczną ułatwień dostępu (I3be25).
  • Naprawiono błędy StaleObjectException występujące podczas wywoływania funkcji toString lub hashCode na nieaktualnym obiekcie UiObject2. (I38ea1).
  • Poprawiliśmy wydajność UiWatcher, pomijając niepotrzebne wywołania waitForIdle. (I8c65e).
  • Poprawiono nieścisłości w dokumentacji Javadoc, zwłaszcza w celu wyjaśnienia, kiedy używany jest każdy parametr Configurator. (Ie10b1, I71631).

Wersja 2.3.0

Wersja 2.3.0

21 lutego 2024 r.

Publikacja 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: dodano obsługę wyszukiwania i obsługi obiektów na wielu wyświetlaczach oraz UiDevice metody zarządzania wyświetlaczami dodatkowymi (Ie6544, I912cd).
  • Nowe selektory:
    • Dodano By.displayId, aby wybierać obiekty według ich identyfikatora wyświetlania (I1825b).
    • Dodano By.hasParentBy.hasAncestor, aby wybierać obiekty na podstawie ich elementów nadrzędnych (I93c36).
    • Dodano By.hint metody wybierania obiektów na podstawie tekstu podpowiedzi (Idd345).
  • Warunki niestandardowe: udostępniliśmy Condition interfejs obsługujący niestandardowe warunki oczekiwania i dodaliśmy odpowiednie metody UiDevice#wait, UiObject2#waitUiObject2#scrollUntil (27c0ea, 099d6e).
  • Poprawki błędów i większa niezawodność
    • Rozwiązaliśmy problem, który powodował, że obliczenia rozmiaru wyświetlacza były czasami nieprawidłowe i mogły ignorować części ekranu (Ifc016). Współrzędne i przesunięcia używane w testach mogą wymagać dostosowania.
    • Zaktualizowaliśmy wstrzykiwanie MotionEvent, aby zwiększyć dokładność (678ca3) i lepiej emulować gesty użytkownika (454450).
    • Poprawiliśmy niezawodność przewijania (I7b059), obracania (c6cea0), długich kliknięć (49572b), uszczypnięć (3c619a) i innych gestów.

Wersja 2.3.0-rc01

7 lutego 2024 r.

androidx.test.uiautomator:uiautomator:2.3.0-rc01 zostaje opublikowany bez zmian. Wersja 2.3.0-rc01 zawiera te zatwierdzenia.

Wersja 2.3.0-beta01

13 grudnia 2023 r.

Publikacja androidx.test.uiautomator:uiautomator:2.3.0-beta01 Wersja 2.3.0-beta01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Zmieniono nazwy metod obliczania marży na podstawie procentu UiObject2 na setGestureMarginPercentagesetGestureMarginsPercentage, aby zachować spójność (I24435).

Poprawki błędów

  • Poprawiliś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

Publikacja androidx.test.uiautomator:uiautomator:2.3.0-alpha05 Wersja 2.3.0-alpha05 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodano UiObject2#getDrawingOrder, aby udostępnić informacje o kolejności rysowania (indeks z). (I5dfa4).
  • Dodano UiDevice metody pobierania, ustawiania, zamrażania i odmrażania rotacji 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 UiDevice używał nieaktualnej instancji Instrumentation, jeśli została ona ponownie utworzona (I18cae).
  • Rozwiązanie problemu z możliwym błędem NPE, jeśli podczas zrzucania węzłów 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).
  • Zmniejszyliśmy domyślną szybkość przewijania UiObject2, aby zwiększyć niezawodność (I5e071).

Wersja 2.3.0-alpha04

26 lipca 2023 r.

Publikacja androidx.test.uiautomator:uiautomator:2.3.0-alpha04 Wersja 2.3.0-alpha04 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodano parametry By.hasParentBy.hasAncestor, aby umożliwić wyszukiwanie obiektów według ich elementów nadrzędnych (I93c36).
  • Dodano UiObject2#getHint, aby pobrać tekst podpowiedzi obiektu, oraz metody By.hint, aby wybierać obiekty według tekstu podpowiedzi (Idd345).
  • Dodano By.displayId, aby umożliwić wybieranie obiektów na podstawie wyświetlacza, na którym się znajdują (I1825b).
  • Dodano metody UiDevice#getDisplayHeight(int)UiDevice#getDisplayWidth(int), które umożliwiają znajdowanie wymiarów wyświetlacza na podstawie jego identyfikatora (Ie6544).
  • Ponownie dodano metody wait(SearchCondition, long)wait(UiObject2Condition, long) w celu zapewnienia zgodności wstecznej (Iebfda).
  • Zmieniono UiDevice#executeShellCommand na publiczne, ale zniechęcające zamiast ukrytego (Ic48a1).

Poprawki błędów

  • Zaktualizowano wstrzykiwanie MotionEvent, aby zmniejszyć niestabilność przez nadanie priorytetu dokładności gestów zamiast szybkości (678ca3).
  • Dodano śledzenie metod wymagających dużych ilości zasobów, aby identyfikować wąskie gardła wydajności (d17de3).
  • Dodano mechanizm ponawiania próby podczas inicjowania połączenia UiAutomation (048caf).
  • Naprawiono możliwy błąd NPE z węzłów o wartości null w UiDevice#dumpWindowHierarchy (b725eb).
  • Usunięto nieoczekiwane błędy związane z wysyłaniem zapytań dotyczących prywatnych wyświetleń lub wykonywaniem na nich działań (985db6, 7053d4).

Wersja 2.3.0-alpha03

19 kwietnia 2023 r.

Publikacja 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 funkcjach w Until, oraz zaktualizowaliśmy metody UiDevice#waitUiObject2#wait, aby akceptowały ten interfejs (27c0ea).
  • Dodano UiObject2#scrollUntil, aby umożliwić przewijanie do momentu spełnienia warunku i osiągnięcie równości z UiScrollable (099d6e).
  • Dodaliśmy UiDevice#setOrientationPortraitsetOrientationLandscape, aby ułatwić rotacje 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

  • Naprawiliśmy błąd, w którym metody UiScrollable czasami używały nieprawidłowych współrzędnych w pakietach SDK w wersjach od 18 do 22 (b53ece).
  • Usunęliśmy błąd, który powodował, że tagi UiObject2#setTextclearText nie mogły modyfikować tekstu w zestawach SDK w wersjach 18 i 19 (77e41d).
  • Rozwiązaliśmy problem z nieprawidłową kolejnością wykonywania UiWatcher (c85f92).
  • Rozwiązaliśmy problem polegający na tym, że po zmianie orientacji urządzenia (c6cea0) obrót urządzenia mógł nie być jeszcze zakończony.UiDevice
  • Poprawiona niezawodność długich kliknięć, przeciągnięć i szczypnięć (49572b, 3c619a).

Wersja 2.3.0-alpha02

11 stycznia 2023 r.

Publikacja androidx.test.uiautomator:uiautomator:2.3.0-alpha02 Wersja 2.3.0-alpha02 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Przebudowaliśmy rejestrowanie w całej bibliotece, aby dostarczać więcej informacji, ostrzegać o potencjalnych problemach i zwiększać spójność.
  • Dodano UiDevice#pressKeyCodes, aby obsługiwać jednoczesne naciskanie wielu klawiszy, np. naciśnięcie przycisków ZASILANIE i ZMNIEJSZANIE 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 wycofaną, ponieważ obsługuje wycofane UiAutomatorTestCase i nie jest już potrzebna (be6c85).
  • Zaktualizowano opóźnienie między UiObject2 MotionEvents 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 w wielu wierszach (1625e6, b/255787130).

Poprawki błędów

  • Rozwiązano problem z sporadycznym zgłaszaniem wyjątku StaleObjectException podczas wysyłania zapytań dotyczących obiektów lub oczekiwania na nie (4cbcc0).
  • Poprawiono wartości zwracane funkcji UiScrollable#scrollToBeginning, scrollToEnd, flingToBeginningflingToEnd, które nie wskazywały, czy osiągnięto początek lub koniec (d33e06).
  • Naprawiono metody UiScrollable#scrollForwardscrollBackward, które ignorowały skonfigurowany limit czasu (29e4f3).
  • Naprawiono błąd polegający na tym, że konstruktor kopiujący BySelector nie obsługiwał selektorów głębokości (6c7b91).
  • Poprawiono obsługę nieprawidłowych wartości procentowych w kolumnach UiObject#pinchIn i pinchOut (01b973).
  • Rozwiązaliśmy rzadki problem, który powodował utratę obsługi wielu okien, jeśli podstawowe UiAutomation połączenie zostało zresetowane (1bb956).

Wersja 2.3.0-alpha01

7 września 2022 roku

Publikacja androidx.test.uiautomator:uiautomator:2.3.0-alpha01 Wersja 2.3.0-alpha01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodano adnotacje dotyczące wartości null we wszystkich metodach publicznych.
  • Przełączono wstrzykiwanie MotionEvent na asynchroniczne z krótkim opóźnieniem, aby zapewnić płynniejsze gesty UiObject2.
  • Skrócono interwał odpytywania podczas oczekiwania z 1000 ms do 100 ms.
  • Zaktualizowano UiDevice#wakeUpUiDevice#sleep, aby używać KEYCODE_WAKEUPKEYCODE_SLEEP w celu obsługi urządzeń, które zastępują przycisk zasilania.
  • Dodaliśmy UiObject2#getDisplayId oraz obsługę wyszukiwania 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, który powodował, że obliczenia rozmiaru wyświetlacza były czasami nieprawidłowe i mogły pomijać części ekranu, zwłaszcza w trybie wielu okien (Ifc016c).
  • Poprawiono skalowanie zrzutów ekranu w UiDevice#takeScreenshot (Id80ad6).
  • Zwiększyliśmy niezawodność funkcji Until.scrollFinishedUiObject2#scroll (I7b0595).
  • Naprawiono ostrzeżenia w trybie ścisłym IncorrectContextUseViolation (Iffa6a0).