Testowanie Uiautomator
Ostatnia aktualizacja | Wersja stabilna | Wersja kandydująca do publikacji | Wersja Beta | Wersja alfa |
---|---|---|---|---|
7 maja 2025 r. | 2.3.0 | - | - | 2.4.0-alpha02 |
Deklarowanie zależności
Aby dodać zależność od testu, musisz dodać do projektu repozytorium Google Maven. Więcej informacji znajdziesz w repozytorium Maven firmy Google.
Dodaj zależności dla artefaktów, których potrzebujesz, w pliku build.gradle
aplikacji lub modułu:
Odlotowe
dependencies { // Use to implement UIAutomator tests androidTestImplementation "androidx.test.uiautomator:uiautomator:2.4.0-alpha02" }
Kotlin
dependencies { // Use to implement UIAutomator tests androidTestImplementation("androidx.test.uiautomator:uiautomator:2.4.0-alpha02") }
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 zauważysz 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 zagłosować na istniejący problem, klikając przycisk z gwiazdką.
Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.
Wersja 2.4
Wersja 2.4.0-alpha02
7 maja 2025 r.
Element androidx.test.uiautomator:uiautomator:2.4.0-alpha02
został zwolniony. Wersja 2.4.0-alpha02 zawiera te komity.
Nowe funkcje
- Początkowy kształt nowej
Uiautomator
Api.UiAutomatorTestScope
można utworzyć za pomocą fabrykiuiAutomator
, która zapewnia dostęp do nowych interfejsów APIonView
. - Wstępne reguły Lint do ostrzegania o używaniu
AccessibilityNodeInfo#getText
i zalecania korzystania ztextAsString
.
Zmiany w interfejsie API
- Dodano
Configurator#setDefaultDisplayId
, aby ustawić identyfikator wyświetlania, który ogranicza wszystkie wyszukiwania do Icdf17. - Zmieniono
Searchable
(interfejs udostępniany przezUiDevice
iUiObject2
) na publiczny (I67f18) dla wygody użytkowników.
Poprawki błędów
- Rozwiązano problem z obsługą kluczy metadanych 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 niekompletne (I60dd3, If4edd).
- Usunięto błąd, który powodował rzadkie pętle nieskończone podczas wywoływania funkcji
UiDevice#scrollUntil
(I39989).
Wersja 2.4.0-alpha01
26 czerwca 2024 r.
Element androidx.test.uiautomator:uiautomator:2.4.0-alpha01
został zwolniony. Wersja 2.4.0-alpha01 zawiera te komity.
Zmiany w interfejsie API
- Parametry
Configurator#getKeyInjectionDelay
isetKeyInjectionDelay
są przestarzałe, ponieważ tekst jest teraz zawsze wstrzykiwany bezpośrednio, a nie przez naciśnięcie klawisza. (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). - Zmniejszenie niestabilności spowodowanej 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).
- Naprawiono błąd
StaleObjectException
występujący podczas wywoływania funkcjitoString
lubhashCode
w przypadku nieaktualnegoUiObject2
. (I38ea1). - Poprawiona wydajność
UiWatcher
dzięki pomijaniu niepotrzebnych wywołańwaitForIdle
. (I8c65e). - Usunięto nieścisłości w dokumentacji, zwłaszcza w części dotyczącej stosowania poszczególnych parametrów
Configurator
. (Ie10b1, I71631).
Wersja 2.3.0
Wersja 2.3.0
21 lutego 2024 r.
Element androidx.test.uiautomator:uiautomator:2.3.0
został zwolniony. 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 działania na obiektach na wielu wyświetlaczach oraz metody
UiDevice
zarządzania wyświetlaczami dodatkowymi (Ie6544, I912cd). - Nowe selektory:
- Warunki niestandardowe: udostępniliśmy interfejs
Condition
, aby obsługiwać niestandardowe warunki oczekiwania, oraz dodaliśmy odpowiednie metodyUiDevice#wait
,UiObject2#wait
iUiObject2#scrollUntil
(27c0ea, 099d6e). - Poprawki błędów i zwiększenie niezawodności
- Rozwiązaliśmy problem polegający na tym, że obliczenia rozmiaru wyświetlacza były czasami nieprawidłowe i mogły pomijać części ekranu (Ifc016). Może być konieczne dostosowanie współrzędnych i odstępów używanych w testach.
- Zaktualizowaliśmy wstrzyknięcie
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), zbliżania i oddalania (3c619a) itp.
Wersja 2.3.0-rc01
7 lutego 2024 r.
androidx.test.uiautomator:uiautomator:2.3.0-rc01
jest opublikowany bez wprowadzenia zmian. Wersja 2.3.0-rc01 zawiera te commity.
Wersja 2.3.0-beta01
13 grudnia 2023 r.
Element androidx.test.uiautomator:uiautomator:2.3.0-beta01
został zwolniony. Wersja 2.3.0-beta01 zawiera te commity.
Zmiany w interfejsie API
- Zmieniono nazwy metod
UiObject2
nasetGestureMarginPercentage
isetGestureMarginsPercentage
, aby zachować spójność (I24435).
Poprawki błędów
- Poprawiono błąd występujący, gdy nie można znaleźć lub uzyskać dostępu do dodatkowego wyświetlacza (116b23)
Wersja 2.3.0-alpha05
1 listopada 2023 roku
Element androidx.test.uiautomator:uiautomator:2.3.0-alpha05
został zwolniony. Wersja 2.3.0-alpha05 zawiera te commity.
Zmiany w interfejsie API
- Dodano
UiObject2#getDrawingOrder
, aby ujawnić informacje o kolejności rysowania (indeks Z). (I5dfa4). - Dodano metody
UiDevice
służące do uzyskiwania, ustawiania, blokowania i odblokowywania obracania dodatkowych wyświetlaczy. (I912cd).
Poprawki błędów
- Dodano ponowne próby do
UiObject2#scrollUntil
, gdy nie udało się wykryć końca przewijania (Ibac6f). - Rozwiązaliśmy problem, który powodował, że
UiDevice
używało nieaktualnego wystąpieniaInstrumentation
, jeśli zostało ono ponownie utworzone (I18cae). - Rozwiązanie problemu polegającego na tym, że w przypadku zrzutu węzłów (Icafcb) może wystąpić NPE, jeśli nie można określić identyfikatora wyświetlania.
- Dodano ostrzeżenie podczas klikania lub przewijania obiektów, których nie można kliknąć ani przewijać (I4a5d9).
- Zmniejszona domyślna prędkość przewijania
UiObject2
, aby zwiększyć niezawodność (I5e071).
Wersja 2.3.0-alpha04
26 lipca 2023 r.
Element androidx.test.uiautomator:uiautomator:2.3.0-alpha04
został zwolniony. Wersja 2.3.0-alpha04 zawiera te commity.
Zmiany w interfejsie API
- Dodano
By.hasParent
iBy.hasAncestor
, aby umożliwić znajdowanie obiektów według ich elementów nadrzędnych (I93c36). - Dodano metodę
UiObject2#getHint
do pobierania tekstu podpowiedzi obiektu oraz metodyBy.hint
do wybierania obiektów na podstawie ich tekstu podpowiedzi (Idd345). - Dodano
By.displayId
, aby umożliwić wybór obiektów na podstawie wyświetlacza, na którym się znajdują (I1825b). - Dodano metody
UiDevice#getDisplayHeight(int)
iUiDevice#getDisplayWidth(int)
, aby znaleźć 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#executeShellCommand
z ukrytego na publiczny, ale nie zalecany (Ic48a1).
Poprawki błędów
- Zaktualizowano wstrzyknięcie
MotionEvent
, aby zmniejszyć niestabilność, stawiając na pierwszym miejscu dokładność gestów zamiast szybkości (678ca3). - Dodano śledzenie do metod zużywających dużo zasobów, aby wykrywać wąskie gardła w wydajności (d17de3).
- Dodano mechanizm ponownego próby podczas inicjowania połączenia UiAutomation (048caf).
- Usunięto możliwy NPE z powodu węzłów nullowych w
UiDevice#dumpWindowHierarchy
(b725eb). - Usunięto nieoczekiwane błędy występujące podczas wysyłania zapytań lub obsługi wyświetlaczy prywatnych (985db6, 7053d4).
Wersja 2.3.0-alpha03
19 kwietnia 2023 r.
Element androidx.test.uiautomator:uiautomator:2.3.0-alpha03
został zwolniony. Wersja 2.3.0-alpha03 zawiera te commity.
Zmiany w interfejsie API
- Udostępniono interfejs
Condition
, aby umożliwić tworzenie niestandardowych warunków oczekiwania zamiast polegania wyłącznie na wbudowanych elementach wUntil
. Zaktualizowano metodyUiDevice#wait
iUiObject2#wait
, aby obsługiwały ten interfejs (27c0ea). - Dodano
UiObject2#scrollUntil
, aby umożliwić przewijanie do momentu spełnienia warunku i uzyskania zgodności zUiScrollable
(099d6e). - Dodaliśmy
UiDevice#setOrientationPortrait
isetOrientationLandscape
, aby ułatwić rotację 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
- Naprawiono metody
UiScrollable
, które czasami używają nieprawidłowych współrzędnych w pakietach SDK 18–22 (b53ece). - Usunęliśmy błąd, który powodował, że funkcje
UiObject2#setText
iclearText
nie mogły modyfikować tekstu w SDK 18 i 19 (77e41d). - Naprawiono błąd polegający na tym, że instrukcje
UiWatcher
nie były wykonywane we właściwej kolejności (c85f92). - Rozwiązaliśmy problem polegający na tym, że po zmianie orientacji
UiDevice
urządzenie mogło nie zakończyć obracania (c6cea0). - Zwiększona niezawodność długich kliknięć, przeciągnięć i zbliżeń (49572b, 3c619a).
Wersja 2.3.0-alpha02
11 stycznia 2023 r.
Element androidx.test.uiautomator:uiautomator:2.3.0-alpha02
został zwolniony. Wersja 2.3.0-alpha02 zawiera te commity.
Zmiany w interfejsie API
- Zmieniliśmy sposób rejestrowania w bibliotece, aby zapewnić więcej informacji, ostrzeżenia o potencjalnych problemach i zwiększoną spójność.
- Dodano
UiDevice#pressKeyCodes
, aby umożliwić jednoczesne naciskanie wielu klawiszy, np. naciśnięcie przycisków POWER i VOLUME_DOWN w celu zrobienia zrzutu ekranu (22e525). - Dodano
UiDevice#setCompressedLayoutHierarchy
i wycofanoUiDevice#setCompressedLayoutHeirarchy
, aby naprawić błąd w nazwie metody (4e2f65). - Oznaczone
UiAutomatorInstrumentationTestRunner
jako wycofane, ponieważ obsługuje wycofaneUiAutomatorTestCase
i nie jest już potrzebne (be6c85). - Zaktualizowano opóźnienie między
UiObject2
MotionEvent
s do podwójnej częstotliwości odświeżania wyświetlacza, aby lepiej emulować gesty użytkownika (454450). - Dodano obsługę tekstów wielowierszowych i dopasowania opisu (1625e6, b/255787130).
Poprawki błędów
- Rozwiązano problem z wyjątkami
StaleObjectException
, które sporadycznie występowały podczas wykonywania zapytań lub oczekiwania na obiekty (4cbcc0). - Naprawiono wartości zwracane funkcji
UiScrollable#scrollToBeginning
,scrollToEnd
,flingToBeginning
iflingToEnd
, które nie określały, czy osiągnięto początek lub koniec (d33e06). - Naprawiono metody
UiScrollable#scrollForward
iscrollBackward
, które ignorowały skonfigurowany czas oczekiwania (29e4f3). - Rozwiązano problem polegający na tym, że konstruktor kopiujący
BySelector
nie obsługiwał selektorów głębokości (6c7b91). - Naprawiono obsługę nieprawidłowych wartości procentowych w elementach
UiObject#pinchIn
ipinchOut
(01b973). - Rozwiązaliśmy rzadki problem, który powodował utratę obsługi wielu okien po zresetowaniu podstawowego połączenia
UiAutomation
(1bb956).
Wersja 2.3.0-alpha01
7 września 2022 roku
Element androidx.test.uiautomator:uiautomator:2.3.0-alpha01
został zwolniony. Wersja 2.3.0-alpha01 zawiera te commity.
Zmiany w interfejsie API
- Dodano adnotacje nullowości wszystkich publicznych metod.
- Przełączenie wstrzykiwania
MotionEvent
na asynchroniczne z krótkim opóźnieniem w celu płynniejszego wykonywania gestówUiObject2
. - Zmniejszono interwał odpytywania w czasie oczekiwania z 1000 ms do 100 ms.
- Zaktualizowano
UiDevice#wakeUp
iUiDevice#sleep
, aby używaćKEYCODE_WAKEUP
iKEYCODE_SLEEP
na urządzeniach, które zastępują przycisk zasilania. - Dodaliśmy
UiObject2#getDisplayId
oraz obsługę znajdowania obiektów i zarządzania nimi na wielu wyświetlaczach. - Dodano metody
UiObject#click
iUiObject2#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 wielookiennym (Ifc016c).
- Naprawiono skalowanie zrzutów ekranu w
UiDevice#takeScreenshot
(Id80ad6). - Zwiększono niezawodność funkcji
Until.scrollFinished
iUiObject2#scroll
(I7b0595). - Naprawiono ostrzeżenia
IncorrectContextUseViolation
w trybie rygorystycznym (Iffa6a0).