Testowanie Uiautomatora

  
Platforma do testowania funkcjonalnego interfejsu użytkownika w różnych aplikacjach
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:

Odlotowy

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.

Tworzenie nowego numeru

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 i setKeyInjectionDelay, 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 funkcji toString lub hashCode w nieaktualnej sytuacji UiObject2. (I38ea1).
  • Zwiększono wydajność UiWatcher przez pominięcie niepotrzebnych wywołań typu waitForIdle. (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:
    • Dodano By.displayId, aby wybierać obiekty według ich wyświetlanego identyfikatora (I1825b).
    • Użytkownicy By.hasParent i By.hasAncestor mogą wybrać obiekty według ich elementów nadrzędnych (I93c36).
    • Dodano metody By.hint umożliwiające wybieranie obiektów według tekstu podpowiedzi (Idd345).
  • Warunki niestandardowe: udostępniliśmy interfejs Condition do obsługi niestandardowych warunków oczekiwania oraz dodaliśmy odpowiednie metody UiDevice#wait, UiObject2#wait i UiObject2#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 na setGestureMarginPercentage i setGestureMarginsPercentage 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 instancji Instrumentation 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 i By.hasAncestor, aby ułatwić znajdowanie obiektów przez ich rodziców (I93c36).
  • Dodano UiObject2#getHint, aby pobierać tekst podpowiedzi do obiektu, i metody By.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) i UiDevice#getDisplayWidth(int), które pozwalają wyszukiwać wymiary wyświetlacza według jego identyfikatora (Ie6544).
  • Ponownie dodaliśmy metody wait(SearchCondition, long) i wait(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 funkcjach Until, oraz zaktualizowaliśmy metody UiDevice#wait i UiObject2#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 parametrem UiScrollable (099d6e).
  • Dodano UiDevice#setOrientationPortrait i setOrientationLandscape, 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 i clearText.
  • 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 interfejsy UiAutomatorTestCase 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 i flingToEnd, które nie określają, czy nastąpił początek/koniec (d33e06).
  • Naprawiono metody UiScrollable#scrollForward i scrollBackward, 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 i pinchOut (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 gesty UiObject2 były bardziej płynne.
  • Skrócono interwał sondowania podczas oczekiwania ze 1000 do 100 ms.
  • Zaktualizowano zasady UiDevice#wakeUp i UiDevice#sleep, aby korzystać z zasad KEYCODE_WAKEUP i KEYCODE_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 i UiObject2#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 i UiObject2#scroll (I7b0595).
  • Naprawiono ostrzeżenia IncorrectContextUseViolation trybu ścisłego (Iffa6a0).