Uiautomator testen

  
Framework für funktionsübergreifende UI-Tests für Apps
Letzte Aktualisierung Stabile Version Releasekandidat Beta-Ausgabe Alpharelease
13. August 2025 2.3.0 - - 2.4.0-alpha06

Abhängigkeiten deklarieren

Für eine Abhängigkeit von „test“ musst du deinem 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 benötigten Artefakte hinzu:

Cool

dependencies {
    // Use to implement UIAutomator tests
    androidTestImplementation "androidx.test.uiautomator:uiautomator:2.4.0-alpha06"
}

Kotlin

dependencies {
    // Use to implement UIAutomator tests
    androidTestImplementation("androidx.test.uiautomator:uiautomator:2.4.0-alpha06")
}

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

Feedback

Ihr Feedback hilft uns, Jetpack zu verbessern. Lassen Sie es uns wissen, wenn Sie neue Probleme entdecken 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 für ein vorhandenes Problem abstimmen, indem Sie auf die Schaltfläche mit dem Stern klicken.

Neues Problem erstellen

Weitere Informationen finden Sie in der Dokumentation zur Problemverfolgung.

Testen von Uiautomator Shell Version 1.0

Version 1.0.0-alpha02

13. August 2025

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

Version 1.0.0-alpha01

18. Juni 2025

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

Neue Funktionen

  • Erste Alphaversion der ui-automator-Shell-Bibliothek zum Ausführen von Shell-Befehlen als Shell-Nutzer. Mit dieser Bibliothek können Sie stdout und stderr lesen und in stdin eines Shell-Prozesses schreiben, der von shell gestartet wurde. De facto wird UiAutomation#executeShellCommandRwe, das in API 34 eingeführt wurde, zurückportiert.

Version 2.4

Version 2.4.0-alpha06

13. August 2025

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

Neue Funktionen

  • Es wurden fensterbasierte APIs für verbesserte Tests mit mehreren Fenstern hinzugefügt. UiDevice#findWindow kann jetzt verwendet werden, um ein bestimmtes UiWindow anhand eines ByWindowSelector zu finden, das mit By.Window-Factory-Methoden erstellt wurde. (I359c4, I40528, I8c963)

Version 2.4.0-alpha05

18. Juni 2025

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

API-Änderungen

  • UiObject2#waitForStable wurde als Tastenkürzel für UiObject2#accessibilityNodeInfo#waitForStable() hinzugefügt

Version 2.4.0-alpha04

4. Juni 2025

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

API-Änderungen

  • onView wurde in onElement umbenannt, um zu verdeutlichen, dass es mit Compose funktioniert (I53a3b, b/419006806)

Fehlerkorrekturen

Version 2.4.0-alpha03

20. Mai 2025

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

Fehlerkorrekturen

  • Ein Problem wurde behoben, durch das in einigen Fällen eine NPE in waitForStableInActiveWindow ausgelöst wurde (Ibf50f, b/417046391).

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 Factory uiAutomator erstellt werden, die Zugriff auf die neuen onView-APIs bietet.
  • Erste Lint-Regeln, um vor der Verwendung von AccessibilityNodeInfo#getText zu warnen und die Verwendung von textAsString vorzuschlagen.

API-Änderungen

  • Configurator#setDefaultDisplayId wurde hinzugefügt, um eine Display-ID festzulegen, auf die alle Suchanfragen beschränkt werden (Icdf17).
  • Searchable (Schnittstelle, die von UiDevice und UiObject2 gemeinsam genutzt wird) wurde aus Gründen der Benutzerfreundlichkeit in „öffentlich“ geändert (I67f18).

Fehlerkorrekturen

  • Die Verarbeitung von Meta-Tasten in UiDevice#pressKeyCodes wurde korrigiert. (I73f80).
  • UiDevice#getWindowRoots wurde aktualisiert, sodass immer Ablagen in Z-Reihenfolge zurückgegeben werden (I87426).
  • Ein Problem wurde behoben, bei dem bestimmte Gesten unvollständig waren (I60dd3, If4edd).
  • Ein seltener Fall einer Endlosschleife 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

  • Die Parameter Configurator#getKeyInjectionDelay und setKeyInjectionDelay sind jetzt veraltet, da Text immer direkt und nicht mehr 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 Instabilität aufgrund veralteter Bedienungshilfenknoten in bestimmten Benutzeroberflächen wurde reduziert, indem der Bedienungshilfencache regelmäßig ungültig gemacht wird (I3be25).
  • Es wurden StaleObjectException behoben, die beim Aufrufen von toString oder hashCode für einen veralteten UiObject2 aufgetreten sind. (I38ea1)
  • Die Leistung von UiWatcher wurde verbessert, indem unnötige waitForIdle-Aufrufe übersprungen werden. (I8c65e)
  • Fehler im Javadoc 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

  • Unterstützung für mehrere Displays: Es wurde Unterstützung für das Suchen und Bearbeiten von Objekten auf mehreren Displays sowie UiDevice-Methoden zum Verwalten sekundärer Displays hinzugefügt (Ie6544, I912cd).
  • Neue Selektoren:
    • By.displayId wurde hinzugefügt, um Objekte anhand ihrer Anzeige-ID auszuwählen (I1825b).
    • By.hasParent und By.hasAncestor wurden hinzugefügt, um Objekte anhand ihrer übergeordneten Elemente auszuwählen (I93c36).
    • Die By.hint-Methoden zum Auswählen von Objekten anhand ihres Hinweistexts (Idd345) wurden hinzugefügt.
  • Benutzerdefinierte Bedingungen: Eine Condition-Schnittstelle zur Unterstützung benutzerdefinierter Wartebedingungen wurde bereitgestellt und entsprechende UiDevice#wait-, UiObject2#wait- und UiObject2#scrollUntil-Methoden wurden hinzugefügt (27c0ea, 099d6e).
  • Fehlerkorrekturen und Zuverlässigkeit
    • Ein Problem wurde behoben, durch das die Berechnungen der Displaygröße gelegentlich falsch waren und möglicherweise Teile des Bildschirms ignoriert wurden (Ifc016). Koordinaten und Offsets, die in Tests verwendet werden, müssen möglicherweise angepasst werden.
    • Die MotionEvent-Einfügung wurde aktualisiert, um die Genauigkeit zu verbessern (678ca3) und Nutzergesten besser zu emulieren (454450).
    • Die Zuverlässigkeit von Scrollen (I7b059), Drehen (c6cea0), langen Klicks (49572b) und Aufziehen (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 UiObject2 wurden zur besseren Übersichtlichkeit in setGestureMarginPercentage und setGestureMarginsPercentage umbenannt (I24435).

Fehlerkorrekturen

  • Der Fehler, der ausgegeben wird, wenn ein sekundäres Display nicht gefunden wird oder nicht darauf zugegriffen werden kann (116b23), wurde verbessert.

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) verfügbar zu machen. (I5dfa4).
  • Es wurden UiDevice-Methoden zum Abrufen, Festlegen, Einfrieren und Aufheben des Einfrierens der Drehung sekundärer Displays hinzugefügt. (I912cd).

Fehlerkorrekturen

  • Wiederholungsversuch für UiObject2#scrollUntil hinzugefügt, wenn das Ende des Scrollens nicht erkannt werden konnte (Ibac6f).
  • Ein Problem wurde behoben, durch das UiDevice eine alte Instrumentation-Instanz verwendet hat, wenn sie neu erstellt wurde (I18cae).
  • Mögliche NullPointerException behoben, wenn die Display-ID beim Ausgeben von Knoten (Icafcb) nicht ermittelt werden kann.
  • Es wurde eine Warnung hinzugefügt, wenn auf nicht klickbare/scrollbare Objekte geklickt oder gescrollt wird (I4a5d9).
  • Die standardmäßige UiObject2-Scrollgeschwindigkeit 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 das Suchen von Objekten anhand ihrer übergeordneten Elemente zu unterstützen (I93c36).
  • UiObject2#getHint wurde 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 (Ie6544) zu ermitteln.
  • Die Methoden wait(SearchCondition, long) und wait(UiObject2Condition, long) wurden zur Abwärtskompatibilität wieder hinzugefügt (Iebfda).
  • UiDevice#executeShellCommand wurde auf „öffentlich, aber nicht empfohlen“ anstatt auf „ausgeblendet“ geändert (Ic48a1).

Fehlerkorrekturen

  • Die MotionEvent-Injektion wurde aktualisiert, um die Instabilität zu verringern. Dabei wird die Genauigkeit von Gesten gegenüber der Geschwindigkeit priorisiert (678ca3).
  • Tracing für ressourcenintensive Methoden hinzugefügt, um Leistungsengpässe zu erkennen (d17de3).
  • Es wurde ein Wiederholungsmechanismus beim Initiieren einer UiAutomation-Verbindung hinzugefügt (048caf).
  • Ein möglicher NPE-Fehler durch Nullknoten in UiDevice#dumpWindowHierarchy wurde behoben (b725eb).
  • Es wurden unerwartete Fehler beim Abfragen oder Bearbeiten privater Displays behoben (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

  • Eine Condition-Schnittstelle wurde bereitgestellt, um benutzerdefinierte Wartebedingungen zu ermöglichen, anstatt sich nur auf die integrierten Funktionen in Until zu verlassen. Die Methoden UiDevice#wait und UiObject2#wait wurden aktualisiert, um diese Schnittstelle zu akzeptieren (27c0ea).
  • UiObject2#scrollUntil wurde hinzugefügt, um das Scrollen bis zum Erfüllen einer Bedingung zu unterstützen und Parität mit UiScrollable zu erreichen (099d6e).
  • UiDevice#setOrientationPortrait und setOrientationLandscape wurden hinzugefügt, um Rotationen über Gerätetypen hinweg zu ermöglichen (e13cb7).
  • UiObject2#setGestureMarginPercent wurde hinzugefügt, um das Festlegen von Rändern relativ zur Objektgröße zu unterstützen. (Ib8c77)

Fehlerkorrekturen

  • Die UiScrollable-Methoden haben gelegentlich ungültige Koordinaten für SDKs 18 bis 22 verwendet (b53ece).
  • Die UiObject2#setText- und clearText-Befehle konnten Text in SDKs 18 und 19 nicht ändern. Das Problem wurde behoben (77e41d).
  • Es wurde ein Fehler behoben, durch den UiWatcher nicht in der richtigen Reihenfolge ausgeführt wurden (c85f92).
  • Ein Problem wurde behoben, durch das die Geräteausrichtung nach einer Änderung der UiDevice-Ausrichtung (c6cea0) möglicherweise noch nicht abgeschlossen war.
  • Die Zuverlässigkeit von Langklicks, Ziehen und Zupfen wurde verbessert (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.
  • UiDevice#pressKeyCodes wurde hinzugefügt, um das gleichzeitige Drücken mehrerer Tasten zu unterstützen, z.B. das Drücken von POWER und VOLUME_DOWN, um einen Screenshot zu erstellen (22e525).
  • UiDevice#setCompressedLayoutHierarchy wurde hinzugefügt und UiDevice#setCompressedLayoutHeirarchy eingestellt, um einen Tippfehler im Methodennamen zu korrigieren (4e2f65).
  • UiAutomatorInstrumentationTestRunner als eingestellt markiert, da es eingestellte UiAutomatorTestCases verarbeitet und nicht mehr erforderlich ist (be6c85).
  • Die Verzögerung zwischen UiObject2 MotionEvents wurde auf das Doppelte der Display-Aktualisierungsrate aktualisiert, um Nutzergesten besser zu emulieren (454450).
  • Unterstützung für mehrzeiligen Text und den Abgleich von Beschreibungen hinzugefügt (1625e6, b/255787130).

Fehlerkorrekturen

  • Es wurde ein Problem behoben, bei dem beim Abfragen oder Warten auf Objekte gelegentlich StaleObjectException-Fehler ausgegeben wurden (4cbcc0).
  • Die Rückgabewerte von UiScrollable#scrollToBeginning, scrollToEnd, flingToBeginning und flingToEnd geben jetzt an, ob der Anfang oder das Ende erreicht wurde (d33e06).
  • Die Methoden UiScrollable#scrollForward und scrollBackward haben das konfigurierte Zeitlimit ignoriert (29e4f3).
  • Der BySelector-Kopierkonstruktor verarbeitet jetzt auch Tiefenauswahlen (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 Nullable-Eigenschaft aller öffentlichen Methoden wurde annotiert.
  • Die MotionEvent-Einfügung wurde auf asynchron mit einer kurzen Verzögerung umgestellt, um UiObject2-Gesten flüssiger zu gestalten.
  • Das Abfrageintervall während des Wartens wurde von 1.000 ms auf 100 ms reduziert.
  • UiDevice#wakeUp und UiDevice#sleep wurden aktualisiert, um KEYCODE_WAKEUP und KEYCODE_SLEEP zu verwenden, um Geräte zu unterstützen, die die Ein/Aus-Taste überschreiben.
  • UiObject2#getDisplayId wurde hinzugefügt und es wird unterstützt, Objekte auf mehreren Displays zu finden und zu verwalten.
  • Die Methoden UiObject#click und UiObject2#clickAndWait wurden hinzugefügt, um auf einen Punkt anhand seiner Koordinaten zu klicken.

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem die Berechnungen der Displaygröße gelegentlich falsch waren und möglicherweise Teile des Bildschirms ignoriert wurden, insbesondere im Multi-Window-Modus (Ifc016c).
  • Die Skalierung von Screenshots in UiDevice#takeScreenshot wurde korrigiert (Id80ad6).
  • Die Zuverlässigkeit von Until.scrollFinished und UiObject2#scroll wurde verbessert (I7b0595).
  • Es wurden Warnungen im strengen Modus für IncorrectContextUseViolation behoben (Iffa6a0).