UI Automator testen

  
Framework für funktionale UI-Tests für mehrere Apps
Letzte Aktualisierung Stabile Version Releasekandidat Beta-Ausgabe Alphaversion
7. Mai 2025 2.3.0 - - 2.4.0-alpha02

Abhängigkeiten deklarieren

Wenn Sie eine Abhängigkeit von „test“ hinzufügen möchten, müssen Sie Ihrem Projekt das Google Maven-Repository hinzufügen. Weitere Informationen finden Sie im Maven-Repository von Google.

Fügen Sie der Datei build.gradle für Ihre App oder Ihr Modul die Abhängigkeiten für die erforderlichen Artefakte hinzu:

Cool

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")
}

Weitere Informationen zu Abhängigkeiten finden Sie unter Build-Abhängigkeiten hinzufügen.

Feedback

Ihr Feedback hilft uns, Jetpack zu verbessern. Bitte teilen Sie uns mit, wenn Sie neue Probleme feststellen oder Ideen zur Verbesserung dieser Bibliothek haben. Sehen Sie sich die vorhandenen Probleme in dieser Bibliothek an, bevor Sie ein neues erstellen. Sie können einem vorhandenen Problem Ihre Stimme geben, indem Sie auf die Schaltfläche mit dem Stern klicken.

Neues Problem erstellen

Weitere Informationen finden Sie in der Dokumentation zum Issue Tracker.

Version 2.4

Version 2.4.0-alpha02

7. Mai 2025

androidx.test.uiautomator:uiautomator:2.4.0-alpha02 wird veröffentlicht. Version 2.4.0-alpha02 enthält diese Commits.

Neue Funktionen

  • Erste Version der neuen Uiautomator API. UiAutomatorTestScope kann über die Fabrik uiAutomator erstellt werden, die Zugriff auf die neuen onView APIs gewährt.
  • Erste Lint-Regeln, die vor der Verwendung von AccessibilityNodeInfo#getText warnen und die Verwendung von textAsString vorschlagen.

API-Änderungen

  • Configurator#setDefaultDisplayId wurde hinzugefügt, um eine Display-ID festzulegen, auf die alle Suchanfragen beschränkt werden sollen (Icdf17).
  • Searchable (gemeinsame Benutzeroberfläche von UiDevice und UiObject2) wurde aus praktischen Gründen in „Öffentlich“ geändert (I67f18).

Fehlerkorrekturen

  • Die Verarbeitung von Metatasten in UiDevice#pressKeyCodes wurde korrigiert. (I73f80).
  • UiDevice#getWindowRoots wurde aktualisiert, sodass immer Wurzeln in Z-Reihenfolge zurückgegeben werden (I87426).
  • Problem behoben, bei dem bestimmte Touch-Gesten unvollständig waren (I60dd3, If4edd).
  • Ein seltener Endlos-Loop beim Aufrufen von UiDevice#scrollUntil wurde behoben (I39989).

Version 2.4.0-alpha01

26. Juni 2024

androidx.test.uiautomator:uiautomator:2.4.0-alpha01 wird veröffentlicht. Version 2.4.0-alpha01 enthält diese Commits.

API-Änderungen

  • Configurator#getKeyInjectionDelay und setKeyInjectionDelay wurden eingestellt, da der Parameter nicht mehr verwendet wird, da Text immer direkt und nicht durch Tastendrücke eingefügt wird. (I3bcc5).

Fehlerkorrekturen

  • Die Verzögerung zwischen UiObject2-Bewegungsereignissen wurde aktualisiert, um dynamische Aktualisierungsraten (z.B. Smooth Display) zu berücksichtigen (I43f12).
  • Die Unzuverlässigkeit aufgrund von veralteten Bedienungshilfenknoten in bestimmten UIs wurde reduziert, indem der Bedienungshilfen-Cache regelmäßig ungültig gemacht wird (I3be25).
  • Behobene StaleObjectExceptions, die beim Aufrufen von toString oder hashCode mit einem veralteten UiObject2 auftraten. (I38ea1).
  • Die UiWatcher-Leistung wurde verbessert, indem unnötige waitForIdle-Aufrufe übersprungen wurden. (I8c65e).
  • Fehler in der Javadoc-Dokumentation wurden behoben, insbesondere um zu verdeutlichen, wann die einzelnen Configurator-Parameter verwendet werden. (Ie10b1, I71631).

Version 2.3.0

Version 2.3.0

21. Februar 2024

androidx.test.uiautomator:uiautomator:2.3.0 wird veröffentlicht. Version 2.3.0 enthält diese Commits.

Wichtige Änderungen seit Version 2.2.0

  • Multi-Display-Unterstützung: Es wurde Unterstützung für das Suchen und Bearbeiten von Objekten auf mehreren Bildschirmen sowie UiDevice-Methoden zum Verwalten sekundärer Bildschirme hinzugefügt (Ie6544, I912cd).
  • Neue Auswahlmöglichkeiten:
    • Mit By.displayId können Objekte anhand ihrer Display-ID ausgewählt werden (I1825b).
    • By.hasParent und By.hasAncestor wurden hinzugefügt, um Objekte nach ihren übergeordneten Objekten auszuwählen (I93c36).
    • Es wurden By.hint-Methoden hinzugefügt, um Objekte anhand ihres Texthinweises auszuwählen (Idd345).
  • Benutzerdefinierte Bedingungen: Es wurde eine Condition-Benutzeroberfläche für benutzerdefinierte Wartebedingungen freigegeben und die entsprechenden Methoden UiDevice#wait, UiObject2#wait und UiObject2#scrollUntil hinzugefügt (27c0ea, 099d6e).
  • Fehlerkorrekturen und Zuverlässigkeit
    • Ein Problem wurde behoben, durch das die Berechnungen der Displaygröße gelegentlich falsch waren und Teile des Bildschirms möglicherweise ignoriert wurden (Ifc016). Die in Tests verwendeten Koordinaten und Offsets müssen möglicherweise angepasst werden.
    • Die MotionEvent-Injection wurde aktualisiert, um die Genauigkeit zu verbessern (678ca3) und Nutzergesten besser zu emulieren (454450).
    • Die Zuverlässigkeit von Scroll- (I7b059), Dreh- (c6cea0), Auslöse- (49572b) und Zoom-Gesten (3c619a) wurde verbessert.

Version 2.3.0-rc01

7. Februar 2024

androidx.test.uiautomator:uiautomator:2.3.0-rc01 wird ohne Änderungen veröffentlicht. Version 2.3.0-rc01 enthält diese Commits.

Version 2.3.0-beta01

13. Dezember 2023

androidx.test.uiautomator:uiautomator:2.3.0-beta01 wird veröffentlicht. Version 2.3.0-beta01 enthält diese Commits.

API-Änderungen

  • Die prozentualen Margenmethoden für UiObject2 wurden aus Gründen der Einheitlichkeit in setGestureMarginPercentage und setGestureMarginsPercentage umbenannt (I24435)

Fehlerkorrekturen

  • Der Fehler, der auftritt, wenn ein sekundäres Display nicht gefunden oder nicht zugänglich ist, wurde verbessert (116b23)

Version 2.3.0-alpha05

1. November 2023

androidx.test.uiautomator:uiautomator:2.3.0-alpha05 wird veröffentlicht. Version 2.3.0-alpha05 enthält diese Commits.

API-Änderungen

  • UiObject2#getDrawingOrder wurde hinzugefügt, um Informationen zur Zeichenreihenfolge (Z-Index) zu sehen. (I5dfa4).
  • Es wurden UiDevice-Methoden hinzugefügt, mit denen sich die Drehung sekundärer Displays abrufen, festlegen, sperren und entsperren lässt. (I912cd).

Fehlerkorrekturen

  • Es wurde ein neuer Versuch für UiObject2#scrollUntil hinzugefügt, wenn das Ende des Scrollens nicht erkannt werden konnte (Ibac6f).
  • Ein Problem wurde behoben, durch das UiDevice eine veraltete Instrumentation-Instanz verwendete, wenn sie neu erstellt wurde (I18cae).
  • Es wurde ein möglicher Null-Pointer-Ausnahmefall behoben, der auftritt, wenn die Anzeigen-ID beim Dumpen von Knoten nicht ermittelt werden kann (Icafcb).
  • Es wurde eine Warnung hinzugefügt, wenn auf nicht anklickbare/nicht scrollbare Objekte geklickt oder gescrollt wird (I4a5d9).
  • Die Standardscrollgeschwindigkeit von UiObject2 wurde reduziert, um die Zuverlässigkeit zu verbessern (I5e071).

Version 2.3.0-alpha04

26. Juli 2023

androidx.test.uiautomator:uiautomator:2.3.0-alpha04 wird veröffentlicht. Version 2.3.0-alpha04 enthält diese Commits.

API-Änderungen

  • By.hasParent und By.hasAncestor wurden hinzugefügt, um Objekte anhand ihrer übergeordneten Elemente zu finden (I93c36).
  • Es wurde UiObject2#getHint hinzugefügt, um den Hinweistext eines Objekts abzurufen, und By.hint-Methoden, um Objekte anhand ihres Hinweistexts auszuwählen (Idd345).
  • By.displayId wurde hinzugefügt, um die Auswahl von Objekten entsprechend dem Display zu unterstützen, auf dem sie sich befinden (I1825b).
  • Die Methoden UiDevice#getDisplayHeight(int) und UiDevice#getDisplayWidth(int) wurden hinzugefügt, um die Abmessungen eines Displays anhand seiner ID zu ermitteln (Ie6544).
  • Die Methoden wait(SearchCondition, long) und wait(UiObject2Condition, long) wurden aus Gründen der Abwärtskompatibilität wieder hinzugefügt (Iebfda).
  • UiDevice#executeShellCommand wurde von „Ausgeblendet“ zu „Öffentlich, aber nicht empfohlen“ geändert (Ic48a1).

Fehlerkorrekturen

  • Die MotionEvent-Injection wurde aktualisiert, um Unregelmäßigkeiten zu reduzieren, indem die Genauigkeit der Geste gegenüber der Geschwindigkeit priorisiert wird (678ca3).
  • Für ressourcenintensive Methoden wurde Tracing hinzugefügt, um Leistungsengpässe zu identifizieren (d17de3).
  • Es wurde ein Wiederholungsmechanismus hinzugefügt, wenn eine UiAutomation-Verbindung hergestellt wird (048caf).
  • Behebung einer möglichen Nullzeigerausnahme durch Nullknoten in UiDevice#dumpWindowHierarchy (b725eb).
  • Behobene unerwartete Fehler bei der Abfrage oder Ausführung von Aktionen auf privaten Displays (985db6, 7053d4).

Version 2.3.0-alpha03

19. April 2023

androidx.test.uiautomator:uiautomator:2.3.0-alpha03 wird veröffentlicht. Version 2.3.0-alpha03 enthält diese Commits.

API-Änderungen

  • Es wurde eine Condition-Schnittstelle freigegeben, um benutzerdefinierte Wartebedingungen zuzulassen, anstatt sich nur auf die integrierten Funktionen in Until zu verlassen. Außerdem wurden die Methoden UiDevice#wait und UiObject2#wait aktualisiert, um diese Schnittstelle zu akzeptieren (27c0ea).
  • UiObject2#scrollUntil wurde hinzugefügt, um das Scrollen bis zur Erfüllung einer Bedingung zu unterstützen und die Parität mit UiScrollable (099d6e) herzustellen.
  • UiDevice#setOrientationPortrait und setOrientationLandscape wurden hinzugefügt, um die Ausrichtung für verschiedene Gerätetypen zu vereinfachen (e13cb7).
  • UiObject2#setGestureMarginPercent wurde hinzugefügt, um Ränder relativ zur Objektgröße festzulegen. (Ib8c77)

Fehlerkorrekturen

  • Behoben wurde ein Problem, bei dem UiScrollable-Methoden in den SDKs 18 bis 22 gelegentlich ungültige Koordinaten verwendeten (b53ece).
  • Behoben wurde das Problem, dass mit UiObject2#setText und clearText kein Text in den SDKs 18 und 19 geändert werden konnte (77e41d).
  • Behoben: UiWatchers wurden nicht in der richtigen Reihenfolge ausgeführt (c85f92).
  • Das Problem, dass die Gerätedrehung nach einer UiDevice-Orientierungsänderung möglicherweise noch nicht abgeschlossen war, wurde behoben (c6cea0).
  • Verbesserte Zuverlässigkeit bei langen Klicks, Ziehen und Zusammenziehen (49572b, 3c619a)

Version 2.3.0-alpha02

11. Januar 2023

androidx.test.uiautomator:uiautomator:2.3.0-alpha02 wird veröffentlicht. Version 2.3.0-alpha02 enthält diese Commits.

API-Änderungen

  • Die Protokollierung in der gesamten Bibliothek wurde überarbeitet, um mehr Informationen bereitzustellen, vor möglichen Problemen zu warnen und die Konsistenz zu verbessern.
  • Mit UiDevice#pressKeyCodes können jetzt mehrere Tasten gleichzeitig gedrückt werden, z.B. die EIN/AUS-Taste und die LEISER-Taste, um einen Screenshot zu erstellen (22e525).
  • UiDevice#setCompressedLayoutHierarchy wurde hinzugefügt und UiDevice#setCompressedLayoutHeirarchy eingestellt, um einen Tippfehler im Methodennamen zu korrigieren (4e2f65).
  • UiAutomatorInstrumentationTestRunner wurde als eingestellt gekennzeichnet, da es eingestellte UiAutomatorTestCases verarbeitet und nicht mehr erforderlich ist (be6c85).
  • Die Verzögerung zwischen UiObject2 MotionEvents wurde auf das Doppelte der Displayaktualisierungsrate aktualisiert, um Nutzergesten besser zu emulieren (454450).
  • Unterstützung für mehrzeiligen Text und Übereinstimmung von Beschreibungen hinzugefügt (1625e6, b/255787130).

Fehlerkorrekturen

  • Es wurde behoben, dass gelegentlich StaleObjectExceptions beim Abfragen oder Warten auf Objekte geworfen wurden (4cbcc0).
  • Die Rückgabewerte von UiScrollable#scrollToBeginning, scrollToEnd, flingToBeginning und flingToEnd wurden korrigiert, da sie nicht angeben, ob der Anfang oder das Ende erreicht wurde (d33e06).
  • Die UiScrollable#scrollForward- und scrollBackward-Methoden ignorierten die konfigurierte Zeitüberschreitung. Das Problem wurde behoben (29e4f3).
  • Der Kopierkonstruktor von BySelector verarbeitete Tiefenselektionen nicht (6c7b91).
  • Die Verarbeitung ungültiger Prozentwerte in UiObject#pinchIn und pinchOut wurde korrigiert (01b973).
  • Ein seltenes Problem wurde behoben, bei dem die Unterstützung für mehrere Fenster verloren ging, wenn die zugrunde liegende UiAutomation-Verbindung zurückgesetzt wurde (1bb956).

Version 2.3.0-alpha01

7. September 2022

androidx.test.uiautomator:uiautomator:2.3.0-alpha01 wird veröffentlicht. Version 2.3.0-alpha01 enthält diese Commits.

API-Änderungen

  • Die Nullspezifikation aller öffentlichen Methoden wurde annotiert.
  • Die MotionEvent-Injection wurde auf asynchron mit einer kurzen Verzögerung umgestellt, um flüssigere UiObject2-Gesten zu ermöglichen.
  • Das Polling-Intervall während der Wartezeit wurde von 1.000 ms auf 100 ms reduziert.
  • UiDevice#wakeUp und UiDevice#sleep wurden durch KEYCODE_WAKEUP und KEYCODE_SLEEP ersetzt, um Geräte zu unterstützen, bei denen die Ein-/Aus-Taste überschrieben wird.
  • UiObject2#getDisplayId hinzugefügt und Unterstützung für das Suchen und Verwalten von Objekten auf mehreren Displays hinzugefügt.
  • Die Methoden UiObject#click und UiObject2#clickAndWait wurden hinzugefügt, um mithilfe der Koordinaten auf einen Punkt zu klicken.

Fehlerkorrekturen

  • Ein Problem wurde behoben, durch das die Berechnungen der Displaygröße gelegentlich falsch waren und Teile des Bildschirms möglicherweise ignoriert wurden, insbesondere im Modus mit mehreren Fenstern (Ifc016c).
  • Die Skalierung von Screenshots in UiDevice#takeScreenshot (Id80ad6) wurde korrigiert.
  • Verbesserte Zuverlässigkeit von Until.scrollFinished und UiObject2#scroll (I7b0595)
  • Behebung von IncorrectContextUseViolation-Warnungen im strengen Modus (Iffa6a0).