UI Automator testen
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.
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 FabrikuiAutomator
erstellt werden, die Zugriff auf die neuenonView
APIs gewährt. - Erste Lint-Regeln, die vor der Verwendung von
AccessibilityNodeInfo#getText
warnen und die Verwendung vontextAsString
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 vonUiDevice
undUiObject2
) 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
undsetKeyInjectionDelay
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
StaleObjectException
s, die beim Aufrufen vontoString
oderhashCode
mit einem veraltetenUiObject2
auftraten. (I38ea1). - Die
UiWatcher
-Leistung wurde verbessert, indem unnötigewaitForIdle
-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
undBy.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).
- Mit
- Benutzerdefinierte Bedingungen: Es wurde eine
Condition
-Benutzeroberfläche für benutzerdefinierte Wartebedingungen freigegeben und die entsprechenden MethodenUiDevice#wait
,UiObject2#wait
undUiObject2#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 insetGestureMarginPercentage
undsetGestureMarginsPercentage
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 veralteteInstrumentation
-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
undBy.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, undBy.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)
undUiDevice#getDisplayWidth(int)
wurden hinzugefügt, um die Abmessungen eines Displays anhand seiner ID zu ermitteln (Ie6544). - Die Methoden
wait(SearchCondition, long)
undwait(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 inUntil
zu verlassen. Außerdem wurden die MethodenUiDevice#wait
undUiObject2#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 mitUiScrollable
(099d6e) herzustellen.UiDevice#setOrientationPortrait
undsetOrientationLandscape
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
undclearText
kein Text in den SDKs 18 und 19 geändert werden konnte (77e41d). - Behoben:
UiWatcher
s 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 undUiDevice#setCompressedLayoutHeirarchy
eingestellt, um einen Tippfehler im Methodennamen zu korrigieren (4e2f65).UiAutomatorInstrumentationTestRunner
wurde als eingestellt gekennzeichnet, da es eingestellteUiAutomatorTestCase
s verarbeitet und nicht mehr erforderlich ist (be6c85).- Die Verzögerung zwischen
UiObject2
MotionEvent
s 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
StaleObjectException
s beim Abfragen oder Warten auf Objekte geworfen wurden (4cbcc0). - Die Rückgabewerte von
UiScrollable#scrollToBeginning
,scrollToEnd
,flingToBeginning
undflingToEnd
wurden korrigiert, da sie nicht angeben, ob der Anfang oder das Ende erreicht wurde (d33e06). - Die
UiScrollable#scrollForward
- undscrollBackward
-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
undpinchOut
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üssigereUiObject2
-Gesten zu ermöglichen. - Das Polling-Intervall während der Wartezeit wurde von 1.000 ms auf 100 ms reduziert.
UiDevice#wakeUp
undUiDevice#sleep
wurden durchKEYCODE_WAKEUP
undKEYCODE_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
undUiObject2#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
undUiObject2#scroll
(I7b0595) - Behebung von
IncorrectContextUseViolation
-Warnungen im strengen Modus (Iffa6a0).