Przetestuj Uiautomator

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

Utwórz nowy numer

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 i By.hasAncestor, aby wybrać obiekty zgodnie z ich elementami nadrzędnymi (I93c36).
    • Dodano metody By.hint, aby wybierać obiekty według tekstu podpowiedzi (Idd345).
  • Warunki niestandardowe: udostępniliśmy interfejs Condition w celu obsługi niestandardowych warunków oczekiwania oraz dodano odpowiednie metody UiDevice#wait, UiObject2#wait i UiObject2#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 na setGestureMarginPercentage i setGestureMarginsPercentage (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ługa UiDevice używała nieaktualnej instancji Instrumentation (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 i By.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 metody By.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) i UiDevice#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) i wait(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 funkcjach Until, oraz zaktualizowaliśmy metody UiDevice#wait i UiObject2#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 i setOrientationLandscape, 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 i clearText.
  • 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 komponenty UiAutomatorTestCase 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 i flingToEnd, które nie wskazują, czy został osiągnięty początek/koniec (d33e06).
  • Naprawiono metody UiScrollable#scrollForward i scrollBackward 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 i pinchOut (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 interfejsu UiObject2.
  • Skrócono interwał odpytywania podczas oczekiwania z 1000 ms do 100 ms.
  • Zaktualizowano UiDevice#wakeUp i UiDevice#sleep, tak aby używały KEYCODE_WAKEUP i KEYCODE_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 i UiObject2#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 i UiObject2#scroll (I7b0595).
  • Naprawiono ostrzeżenia w trybie rygorystycznym IncorrectContextUseViolation (Iffa6a0).