Przetestuj Uiautomator
Najnowsza aktualizacja | Wersja stabilna | Kandydat do publikacji | Wersja Beta | Wersja alfa |
---|---|---|---|---|
21 lutego 2024 r. | 2.3.0 | - | - | - |
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:
Odlotowy
dependencies { // Use to implement UIAutomator tests androidTestImplementation "androidx.test.uiautomator:uiautomator:2.3.0" }
Kotlin
dependencies { // Use to implement UIAutomator tests androidTestImplementation("androidx.test.uiautomator:uiautomator:2.3.0") }
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 znajdziesz nowe wydania lub masz pomysły na ulepszenie tej biblioteki. Zanim utworzysz nową bibliotekę, przejrzyj problemy z tą biblioteką. Możesz oddać głos w ramach istniejącego problemu, klikając przycisk gwiazdki.
Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.
Wersja 2.3.0
Wersja 2.3.0
21 lutego 2024 r.
Aplikacja androidx.test.uiautomator:uiautomator:2.3.0
została zwolniona. Wersja 2.3.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 2.2.0
- Obsługa wielu wyświetlaczy: obsługa wyszukiwania obiektów i wykonywania na nich operacji na wielu wyświetlaczach oraz metody
UiDevice
do zarządzania wyświetlaczami dodatkowymi (Ie6544, I912cd). - Nowe selektory:
- Dodano funkcję
By.displayId
umożliwiającą wybieranie obiektów według ich identyfikatora wyświetlania (I1825b). - Dodano obiekty
By.hasParent
iBy.hasAncestor
, aby wybrać obiekty zgodnie z ich elementami nadrzędnymi (I93c36). - Dodano metody
By.hint
, aby wybierać obiekty według tekstu podpowiedzi (Idd345).
- Dodano funkcję
- Warunki niestandardowe: udostępniliśmy interfejs
Condition
w celu obsługi niestandardowych warunków oczekiwania oraz dodano odpowiednie metodyUiDevice#wait
,UiObject2#wait
iUiObject2#scrollUntil
(27c0ea, 099d6e). - Poprawki błędów i niezawodność
- Naprawiono błąd polegający na tym, że obliczenia rozmiaru wyświetlacza były czasami nieprawidłowe i mogło powodować ignorowanie części ekranu (Ifc016). Konieczne może być dostosowanie współrzędnych i przesunięć używanych w testach.
- Zaktualizowano wstrzyknięcie kodu
MotionEvent
, aby zwiększyć dokładność (678ca3) i lepiej emulować gesty użytkownika (454450). - Zwiększona niezawodność przewinięcia (I7b059), obrotów (c6cea0), długich kliknięć (49572b), ściągnięcia palców (3c619a) i innych działań.
Wersja 2.3.0-rc01
7 lutego 2024 r.
Aplikacja androidx.test.uiautomator:uiautomator:2.3.0-rc01
została wydana bez zmian. Wersja 2.3.0-rc01 zawiera te zatwierdzenia.
Wersja 2.3.0-beta01
13 grudnia 2023 r.
Aplikacja androidx.test.uiautomator:uiautomator:2.3.0-beta01
została zwolniona. Wersja 2.3.0-beta01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Aby zachować spójność, zmieniliśmy nazwy metod marży opartej na wartościach procentowych
UiObject2
nasetGestureMarginPercentage
isetGestureMarginsPercentage
(I24435).
Poprawki błędów
- Poprawiono błąd zgłaszany w przypadku braku lub dostępu do dodatkowego wyświetlacza (116b23)
Wersja 2.3.0-alfa05
1 listopada 2023 roku
Aplikacja androidx.test.uiautomator:uiautomator:2.3.0-alpha05
została zwolniona. Wersja 2.3.0-alpha05 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano element
UiObject2#getDrawingOrder
, aby udostępniać informacje o kolejności rysowania (z-index). (I5dfa4). - Dodano metody
UiDevice
do pobierania, ustawiania, blokowania i odblokowywania obrotu dodatkowych wyświetlaczy. (I912cd).
Poprawki błędów
- Dodano ponawianie w metodzie
UiObject2#scrollUntil
, gdy nie udało się wykryć końca przewijania (Ibac6f). - Rozwiązaliśmy problem polegający na tym, że w przypadku odtworzonego wystąpienia
Instrumentation
usługaUiDevice
używała nieaktualnej instancjiInstrumentation
(I18cae). - Naprawiony możliwy NPE, jeśli podczas zrzutu węzłów nie można określić identyfikatora wyświetlania (Icafcb).
- Dodaliśmy ostrzeżenie podczas klikania lub przewijania obiektów, których nie da się kliknąć lub przewijać (I4a5d9).
- Zmniejszono domyślną szybkość przewijania w trybie
UiObject2
, aby zwiększyć niezawodność (I5e071).
Wersja 2.3.0-alfa04
26 lipca 2023 r.
Aplikacja androidx.test.uiautomator:uiautomator:2.3.0-alpha04
została zwolniona. Wersja 2.3.0-alpha04 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano funkcje
By.hasParent
iBy.hasAncestor
, aby umożliwić znajdowanie obiektów zgodnie z ich elementami nadrzędnymi (I93c36). - Dodano metodę
UiObject2#getHint
, która pozwala pobierać tekst podpowiedzi obiektu, oraz metodyBy.hint
do wybierania obiektów zgodnie z ich tekstem podpowiedzi (Idd345). - Dodano
By.displayId
do obsługi wybierania obiektów na podstawie sposobu wyświetlania, w którym się znajdują (I1825b). - Dodano metody
UiDevice#getDisplayHeight(int)
iUiDevice#getDisplayWidth(int)
, które pozwalają znajdować wymiary wyświetlacza według jego identyfikatora (Ie6544). - Aby zapewnić zgodność wsteczną, dodaliśmy ponownie metody
wait(SearchCondition, long)
iwait(UiObject2Condition, long)
(Iebfda). - Zmieniono status
UiDevice#executeShellCommand
na publiczny, ale nie zalecamy jego ukrycia (Ic48a1).
Poprawki błędów
- Zaktualizowano wstrzykiwanie
MotionEvent
, aby zmniejszyć niestabilne obrazy. Zwiększono dokładność gestów zamiast szybkości (678ca3). - Dodano śledzenie do metod intensywnie korzystających z zasobów, aby identyfikować wąskie gardła wydajności (d17de3).
- Dodano mechanizm ponawiania podczas inicjowania połączenia UiAutomation (048caf).
- Naprawiliśmy możliwy NPE w węzłach o wartości null w komponencie
UiDevice#dumpWindowHierarchy
(b725eb). - Usunięto nieoczekiwane błędy związane z wysyłaniem zapytań lub korzystaniem z wyświetlaczy prywatnych (985db6, 7053d4).
Wersja 2.3.0-alfa03
19 kwietnia 2023 r.
Aplikacja androidx.test.uiautomator:uiautomator:2.3.0-alpha03
została zwolniona. Wersja 2.3.0-alpha03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Udostępniliśmy interfejs
Condition
, który pozwala na niestandardowe warunki oczekiwania zamiast polegać wyłącznie na wbudowanych funkcjachUntil
, oraz zaktualizowaliśmy metodyUiDevice#wait
iUiObject2#wait
, aby mogły zaakceptować ten interfejs (27c0ea). - Dodano funkcję
UiObject2#scrollUntil
, aby umożliwić przewijanie do momentu spełnienia warunku i spójność z wartościąUiScrollable
(099d6e). - Dodano atrybuty
UiDevice#setOrientationPortrait
isetOrientationLandscape
, aby ułatwić rotację urządzeń różnych typów (e13cb7). - Dodano funkcję
UiObject2#setGestureMarginPercent
umożliwiającą obsługę ustawiania marginesów względem rozmiaru obiektu. (Ib8c77)
Poprawki błędów
- Naprawiliśmy sporadyczne metody
UiScrollable
wykorzystujące nieprawidłowe współrzędne w pakietach SDK od 18 do 22 (b53ece). - Naprawiono problemy z modyfikacją tekstu w pakietach SDK 18 i 19 (77e41d) za pomocą
UiObject2#setText
iclearText
. - Usunięto problem z wykonywaniem instrukcji
UiWatcher
w odpowiedniej kolejności (c85f92). - Rozwiązaliśmy problem polegający na tym, że po zmianie orientacji w
UiDevice
(c6cea0) urządzenie mogło jeszcze nie zostać obrócone. - Zwiększona niezawodność długich kliknięć, przeciągnięcia i ściągnięcia palcami (49572b, 3c619a).
Wersja 2.3.0-alfa02
11 stycznia 2023 r.
Aplikacja androidx.test.uiautomator:uiautomator:2.3.0-alpha02
została zwolniona. Wersja 2.3.0-alpha02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Przeanalizowaliśmy logowanie w całej bibliotece, aby dostarczyć więcej informacji, ostrzegać o możliwych problemach i poprawić spójność.
- Dodano
UiDevice#pressKeyCodes
, aby umożliwić naciskanie wielu klawiszy jednocześnie, np. naciśnięcie POWER i VOLUME_DOWN, by zrobić zrzut ekranu (22e525). - Dodano funkcję
UiDevice#setCompressedLayoutHierarchy
i wycofano metodęUiDevice#setCompressedLayoutHeirarchy
, aby poprawić literówkę w nazwie metody (4e2f65). - Oznaczono atrybut
UiAutomatorInstrumentationTestRunner
jako wycofany, ponieważ obsługuje wycofane komponentyUiAutomatorTestCase
i nie jest już potrzebny (be6c85). - Zmieniono opóźnienie w zakresie od
UiObject2
MotionEvent
s do 2 razy większej częstotliwości odświeżania wyświetlacza, aby lepiej emulować gesty użytkownika (454450). - Dodano obsługę dopasowania tekstu wielowierszowego i opisu (1625e6, b/255787130).
Poprawki błędów
- Naprawiono wysyłanie żądań
StaleObjectException
okazjonalnych podczas wysyłania zapytań lub oczekiwania na obiekty (4cbcc0). - Poprawiliśmy zwracane wartości
UiScrollable#scrollToBeginning
,scrollToEnd
,flingToBeginning
iflingToEnd
, które nie wskazują, czy został osiągnięty początek/koniec (d33e06). - Naprawiono metody
UiScrollable#scrollForward
iscrollBackward
ignorowania skonfigurowanego limitu czasu (29e4f3). - Usunięto problem z konstruktorem kopiowania
BySelector
, który nie obsługuje selektorów głębi (6c7b91). - Naprawiono obsługę nieprawidłowych wartości procentów w
UiObject#pinchIn
ipinchOut
(01b973). - Naprawiono rzadki problem, który powodował utratę obsługi trybu wielu okien po zresetowaniu podstawowego połączenia
UiAutomation
(1bb956).
Wersja 2.3.0-alfa01
7 września 2022 roku
Aplikacja androidx.test.uiautomator:uiautomator:2.3.0-alpha01
została zwolniona. Wersja 2.3.0-alpha01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano adnotacje do wartości null wszystkich metod publicznych.
- Z krótkim opóźnieniem przełączono wstrzykiwanie
MotionEvent
na asynchroniczne, aby zapewnić płynniejsze gesty interfejsuUiObject2
. - Skrócono interwał odpytywania podczas oczekiwania z 1000 ms do 100 ms.
- Zaktualizowano
UiDevice#wakeUp
iUiDevice#sleep
, tak aby używałyKEYCODE_WAKEUP
iKEYCODE_SLEEP
do obsługi urządzeń, które zastępują przycisk zasilania. - Dodano
UiObject2#getDisplayId
i obsługę wyszukiwania obiektów i zarządzania nimi na wielu ekranach. - Dodano metody
UiObject#click
iUiObject2#clickAndWait
do klikania punktu przy użyciu jego współrzędnych.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że obliczenia rozmiaru wyświetlacza były od czasu do czasu niepoprawne i mogły ignorować część 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.scrollFinished
iUiObject2#scroll
(I7b0595). - Naprawiono ostrzeżenia w trybie rygorystycznym
IncorrectContextUseViolation
(Iffa6a0).