Testowanie Uiautomatora
Najnowsza aktualizacja | Wersja stabilna | Kandydat do wydania | Wersja Beta | Wydanie alfa |
---|---|---|---|---|
26 czerwca 2024 r. | 2.3.0 | - | - | 2.4.0-alfa01 |
Deklarowanie zależności
Aby dodać zależność od testu, musisz dodać do projektu repozytorium Google Maven. Więcej informacji znajdziesz w repozytorium Google Maven.
W pliku build.gradle
aplikacji lub modułu dodaj zależności artefaktów, których potrzebujesz:
Groovy
dependencies { // Use to implement UIAutomator tests androidTestImplementation "androidx.test.uiautomator:uiautomator:2.4.0-alpha01" }
Kotlin
dependencies { // Use to implement UIAutomator tests androidTestImplementation("androidx.test.uiautomator:uiautomator:2.4.0-alpha01") }
Więcej informacji o zależnościach znajdziesz w artykule Dodawanie zależności kompilacji.
Opinia
Twoja opinia pomoże nam ulepszyć Jetpack. Daj nam znać, jeśli odkryjesz nowe wydania lub masz pomysły na ulepszenie tej biblioteki. Zanim utworzysz nową bibliotekę, przejrzyj istniejące problemy w tej bibliotece. Możesz oddać swój głos do istniejącego problemu, klikając przycisk gwiazdki.
Więcej informacji znajdziesz w dokumentacji narzędzia do śledzenia problemów.
Wersja 2.4
Wersja 2.4.0-alpha01
26 czerwca 2024 r.
Usługa androidx.test.uiautomator:uiautomator:2.4.0-alpha01
została zwolniona. Wersja 2.4.0-alfa01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Wycofano
Configurator#getKeyInjectionDelay
isetKeyInjectionDelay
, ponieważ parametr nie jest używany, ponieważ tekst jest 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łynne wyświetlanie) (I43f12). - Zmniejszono niestabilne działanie węzłów ułatwień dostępu w niektórych interfejsach użytkownika przez okresowe unieważnianie pamięci podręcznej ułatwień dostępu (I3be25).
- Naprawiono
StaleObjectException
występujące podczas wywoływania funkcjitoString
lubhashCode
w nieaktualnej sytuacjiUiObject2
. (I38ea1). - Zwiększono wydajność
UiWatcher
przez pominięcie niepotrzebnych wywołań typuwaitForIdle
. (I8c65e). - Naprawiono nieścisłości w zasadzie javadoc, zwłaszcza w celu wyjaśnienia, kiedy używany jest każdy parametr
Configurator
. (Ie10b1 i I71631).
Wersja 2.3.0
Wersja 2.3.0
21 lutego 2024 r.
Usługa androidx.test.uiautomator:uiautomator:2.3.0
została zwolniona. Wersja 2.3.0 zawiera te zatwierdzenia.
Ważne zmiany wprowadzone od wersji 2.2.0
- Obsługa wielu wyświetlaczy: dodaliśmy obsługę znajdowania obiektów na wielu wyświetlaczach i korzystania z nich oraz metody
UiDevice
do zarządzania wyświetlaczami dodatkowymi (Ie6544, I912cd). - Nowe selektory:
- Warunki niestandardowe: udostępniliśmy interfejs
Condition
do obsługi niestandardowych warunków oczekiwania oraz dodaliśmy odpowiednie metodyUiDevice#wait
,UiObject2#wait
iUiObject2#scrollUntil
(27c0ea, 099d6e). - Poprawki błędów i niezawodność
- Rozwiązaliśmy problem, który powodował, że obliczenia rozmiaru wyświetlacza były czasami nieprawidłowe i mogły ignorować fragmenty ekranu (Ifc016). Konieczne może być dostosowanie współrzędnych i przesunięć używanych w testach.
- Zaktualizowaliśmy wstrzykiwanie kodu
MotionEvent
, aby zwiększyć dokładność (678ca3) i lepiej emulować gesty użytkownika (454450). - Poprawiono niezawodność przewijania (I7b059), obrotów (c6cea0), długich kliknięć (49572b), ściągnięcia palców (3c619a) i innych funkcji.
Wersja 2.3.0-rc01
7 lutego 2024 r.
Pakiet androidx.test.uiautomator:uiautomator:2.3.0-rc01
został udostępniony bez zmian. Wersja 2.3.0-rc01 zawiera te zatwierdzenia.
Wersja 2.3.0-beta01
13 grudnia 2023 r.
Usługa androidx.test.uiautomator:uiautomator:2.3.0-beta01
została zwolniona. Wersja 2.3.0-beta01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Zmieniliśmy nazwy metod marży opartej na wartościach procentowych
UiObject2
nasetGestureMarginPercentage
isetGestureMarginsPercentage
w celu zachowania spójności (I24435).
Poprawki błędów
- Poprawiliśmy błąd zgłaszany w przypadku braku lub niedostępności drugiego wyświetlacza (116b23).
Wersja 2.3.0-alpha05
1 listopada 2023 roku
Usługa androidx.test.uiautomator:uiautomator:2.3.0-alpha05
została zwolniona. Wersja 2.3.0-alfa05 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodano
UiObject2#getDrawingOrder
, aby udostępnić informacje o kolejności rysowania (indeksu z). (I5dfa4). - Dodaliśmy metody
UiDevice
umożliwiające włączanie, ustawianie, blokowanie i odblokowywanie obrotu wyświetlaczy dodatkowych. (I912cd).
Poprawki błędów
- Dodano ponowienie do listy
UiObject2#scrollUntil
, gdy nie można było wykryć końca przewijania (Ibac6f). - Rozwiązaliśmy problem, który powodował, że usługa
UiDevice
używała nieaktualnej instancjiInstrumentation
w przypadku jej ponownego utworzenia (I18cae). - Naprawiono możliwy NPE, jeśli nie można określić wyświetlanego identyfikatora podczas usuwania węzłów (Icafcb).
- Dodano ostrzeżenie podczas klikania lub przewijania obiektów, których nie można kliknąć lub których nie można przewijać (I4a5d9).
- Zmniejszyliśmy domyślną szybkość przewijania w trybie
UiObject2
, aby zwiększyć niezawodność (I5e071).
Wersja 2.3.0-alfa04
26 lipca 2023 r.
Usługa androidx.test.uiautomator:uiautomator:2.3.0-alpha04
została zwolniona. Wersja 2.3.0-alfa04 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodano
By.hasParent
iBy.hasAncestor
, aby ułatwić znajdowanie obiektów przez ich rodziców (I93c36). - Dodano
UiObject2#getHint
, aby pobierać tekst podpowiedzi do obiektu, i metodyBy.hint
, by wybierać obiekty zgodnie z ich tekstem (Idd345). - Dodano interfejs
By.displayId
, aby umożliwić wybieranie obiektów zgodnie z wyświetlaczem, na którym są wyświetlane (I1825b). - Dodano metody
UiDevice#getDisplayHeight(int)
iUiDevice#getDisplayWidth(int)
, które pozwalają wyszukiwać 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). - Zmieniono
UiDevice#executeShellCommand
na publiczny, ale odradzamy jego ukrycie (Ic48a1).
Poprawki błędów
- Zaktualizowaliśmy wstrzykiwanie kodu
MotionEvent
, aby zmniejszyć niestabilne działanie, nadając priorytet dokładności gestów zamiast szybkości (678ca3). - Dodaliśmy śledzenie do metod z dużą ilością zasobów w celu identyfikacji wąskich gardeł wydajności (d17de3).
- Dodano mechanizm ponawiania próby podczas inicjowania połączenia UiAutomation (048caf).
- Naprawiono możliwy NPE z węzłów o wartości null w
UiDevice#dumpWindowHierarchy
(b725eb). - Poprawiliśmy nieoczekiwane błędy występujące podczas wysyłania zapytań i działania na ekranach prywatnych (985db6, 7053d4).
Wersja 2.3.0-alfa03
19 kwietnia 2023 r.
Usługa androidx.test.uiautomator:uiautomator:2.3.0-alpha03
została zwolniona. Wersja 2.3.0-alfa03 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Udostępniliśmy interfejs
Condition
, aby umożliwić użycie niestandardowych warunków oczekiwania, zamiast polegać wyłącznie na wbudowanych funkcjachUntil
, oraz zaktualizowaliśmy metodyUiDevice#wait
iUiObject2#wait
, aby akceptować ten interfejs (27c0ea). - Dodano funkcję
UiObject2#scrollUntil
do obsługi przewijania do momentu spełnienia warunku i uzyskiwania spójności z parametremUiScrollable
(099d6e). - Dodano
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 korzystały z nieprawidłowych współrzędnych w pakietach SDK od 18 do 22 (b53ece). - Rozwiązaliśmy problem, który nie dotyczył modyfikacji tekstu w pakietach SDK 18 i 19 (77e41d) w
UiObject2#setText
iclearText
. - Rozwiązaliśmy problem, który:
UiWatcher
nie był wykonywany w odpowiedniej kolejności (c85f92). - Rozwiązanie problemu polegającego na tym, że po zmianie orientacji urządzenia w trybie
UiDevice
(c6cea0) obrót urządzenia mógł się jeszcze nie rozpocząć. - Poprawiono niezawodność długich kliknięć, przeciągania i ściągania (49572b, 3c619a).
Wersja 2.3.0-alfa02
11 stycznia 2023 r.
Usługa androidx.test.uiautomator:uiautomator:2.3.0-alpha02
została zwolniona. Wersja 2.3.0-alfa02 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Ponownie zmieniliśmy logowanie w bibliotece, aby dostarczać więcej informacji, ostrzegać o możliwych problemach i zwiększać spójność.
- Dodano funkcję
UiDevice#pressKeyCodes
, która umożliwia jednoczesne naciskanie kilku klawiszy, np. naciśnięcie przycisku ZASILANIA i VOLUME_DOWN, by zrobić zrzut ekranu (22e525). - Dodano metodę
UiDevice#setCompressedLayoutHierarchy
i wycofaliśmy zasadęUiDevice#setCompressedLayoutHeirarchy
, aby poprawić literówkę w nazwie metody (4e2f65). - Oznaczono usługę
UiAutomatorInstrumentationTestRunner
jako wycofaną, ponieważ obsługuje wycofane interfejsyUiAutomatorTestCase
i nie jest już potrzebna (be6c85). - Opóźnienie między
UiObject2
MotionEvent
s zostało zmienione i będzie dwukrotnie wyższe niż częstotliwość odświeżania ekranu, aby lepiej emulować gesty użytkownika (454450). - Dodano obsługę dopasowywania tekstu i opisu w wielu wierszach (1625e6, b/255787130).
Poprawki błędów
- Naprawiliśmy błąd
StaleObjectException
, który pojawiał się okazjonalnie podczas wysyłania zapytań lub oczekiwania na obiekty (4cbcc0). - Naprawiono wartości zwracane przez wartości
UiScrollable#scrollToBeginning
,scrollToEnd
,flingToBeginning
iflingToEnd
, które nie określają, czy nastąpił początek/koniec (d33e06). - Naprawiono metody
UiScrollable#scrollForward
iscrollBackward
, które ignorowały skonfigurowany czas oczekiwania (29e4f3). - Naprawiono konstruktor tekstu
BySelector
, który nie obsługuje selektorów głębokości (6c7b91). - Naprawiono obsługę nieprawidłowych wartości procentowych w atrybutach
UiObject#pinchIn
ipinchOut
(01b973). - Rozwiązaliśmy rzadki problem, który powodował utratę obsługi wielu okien w przypadku zresetowania połączenia z
UiAutomation
(1bb956).
Wersja 2.3.0-alfa01
7 września 2022 roku
Usługa androidx.test.uiautomator:uiautomator:2.3.0-alpha01
została zwolniona. Wersja 2.3.0-alfa01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Adnotacja o braku wartości wszystkich metod publicznych.
- Przełączono wstrzykiwanie kodu
MotionEvent
na asynchroniczne z krótkim opóźnieniem, aby gestyUiObject2
były bardziej płynne. - Skrócono interwał sondowania podczas oczekiwania ze 1000 do 100 ms.
- Zaktualizowano zasady
UiDevice#wakeUp
iUiDevice#sleep
, aby korzystać z zasadKEYCODE_WAKEUP
iKEYCODE_SLEEP
w celu obsługi urządzeń, które zastępują przycisk zasilania. - Dodano
UiObject2#getDisplayId
i obsługę wyszukiwania obiektów na wielu wyświetlaczach i zarządzania nimi. - Dodano metody
UiObject#click
iUiObject2#clickAndWait
służące do klikania punktu za pomocą jego współrzędnych.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że podczas obliczania rozmiaru wyświetlacza były czasami nieprawidłowe i mogły ignorować fragmenty ekranu, zwłaszcza w trybie wielu okien (Ifc016c).
- Naprawiono skalowanie zrzutów ekranu w
UiDevice#takeScreenshot
(Id80ad6). - Poprawiono niezawodność funkcji
Until.scrollFinished
iUiObject2#scroll
(I7b0595). - Naprawiono ostrzeżenia
IncorrectContextUseViolation
trybu ścisłego (Iffa6a0).