Uiautomator testen

  
Framework für App-übergreifende funktionale UI-Tests
Letzte Aktualisierung Stabile Version Releasekandidat Beta-Ausgabe Alpharelease
21. Februar 2024 2.3.0 - - -

Abhängigkeiten deklarieren

Zum Hinzufügen einer Abhängigkeit vom Test müssen Sie Ihrem Projekt das Maven-Repository von Google hinzufügen. Weitere Informationen finden Sie im Maven-Repository von Google.

Fügen Sie der Datei build.gradle für Ihre Anwendung oder Ihr Modul die Abhängigkeiten für die benötigten Artefakte hinzu:

Groovig

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

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

Feedback

Dein Feedback hilft uns, Jetpack zu verbessern. Lassen Sie 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 eine neue erstellen. Durch Klicken auf die Stern-Schaltfläche können Sie zu einem vorhandenen Problem abstimmen.

Neues Problem erstellen

Weitere Informationen finden Sie in der Dokumentation zum Issue Tracker.

Version 2.3.0

Version 2.3.0

21. Februar 2024

androidx.test.uiautomator:uiautomator:2.3.0 wird freigegeben. Version 2.3.0 enthält diese Commits.

Wichtige Änderungen seit Version 2.2.0

  • Unterstützung mehrerer Bildschirme: Zusätzliche Unterstützung für das Suchen und Bearbeiten von Objekten auf mehreren Displays sowie UiDevice-Methoden zur Verwaltung von sekundären Bildschirmen (Ie6544, I912cd).
  • Neue Selektoren:
    • By.displayId wurde hinzugefügt, um Objekte nach ihrer Display-ID auszuwählen (I1825b).
    • By.hasParent und By.hasAncestor wurden hinzugefügt, um Objekte gemäß ihren übergeordneten Elementen auszuwählen (I93c36).
    • By.hint-Methoden zum Auswählen von Objekten nach ihrem Hinweistext wurden hinzugefügt (Idd345).
  • Benutzerdefinierte Bedingungen: Es wurde eine Condition-Schnittstelle zur Unterstützung benutzerdefinierter Wartebedingungen bereitgestellt und entsprechende UiDevice#wait-, UiObject2#wait- und UiObject2#scrollUntil-Methoden (27c0ea, 099d6e) hinzugefügt.
  • Fehlerkorrekturen und Zuverlässigkeit
    • Die Berechnung der Anzeigegröße war gelegentlich fehlerhaft und es wurden unter Umständen Teile des Bildschirms ignoriert (Ifc016). Die in Tests verwendeten Koordinaten und Offsets müssen möglicherweise angepasst werden.
    • Die MotionEvent-Injektion wurde aktualisiert, um die Genauigkeit (678ca3) zu verbessern und Nutzergesten besser zu emulieren (454450).
    • Die Zuverlässigkeit von Scrollvorgängen (I7b059), Drehungen (c6cea0), langen Klicks (49572b), Auseinander- und Zusammenziehen (3c619a) und mehr 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 freigegeben. Version 2.3.0-beta01 enthält diese Commits.

API-Änderungen

  • Die prozentbasierten UiObject2-Margenmethoden wurden aus Konsistenzgründen in setGestureMarginPercentage und setGestureMarginsPercentage umbenannt (I24435).

Fehlerkorrekturen

  • Der Fehler, der ausgelöst wird, wenn ein sekundärer Bildschirm nicht gefunden wurde 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 freigegeben. Version 2.3.0-alpha05 enthält diese Commits.

API-Änderungen

  • UiObject2#getDrawingOrder wurde hinzugefügt, um Informationen zur Zeichenreihenfolge (Z-Index) anzuzeigen. (I5dfa4)
  • UiDevice-Methoden zum Abrufen, Festlegen, Einfrieren und Aufheben der Fixierung der Rotation von sekundären Bildschirmen wurden 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, bei dem UiDevice eine veraltete Instrumentation-Instanz verwendet hat, wenn sie neu erstellt wurde (I18cae).
  • Eine mögliche NPE wurde behoben, wenn die Anzeige-ID beim Dumping von Knoten nicht ermittelt werden kann (Icafcb).
  • Es wurde eine Warnung beim Klicken und Scrollen bei nicht anklickbaren/scrollbaren Objekten hinzugefügt (I4a5d9).
  • Die standardmäßige Scrollgeschwindigkeit 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 freigegeben. Version 2.3.0-alpha04 enthält diese Commits.

API-Änderungen

  • By.hasParent und By.hasAncestor wurden hinzugefügt, um die Suche nach 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 gemäß ihrem Hinweistext auszuwählen (Idd345).
  • By.displayId wurde hinzugefügt, um die Auswahl von Objekten entsprechend der Anzeige zu unterstützen, auf der sie angezeigt werden (I1825b).
  • Die Methoden UiDevice#getDisplayHeight(int) und UiDevice#getDisplayWidth(int) wurden hinzugefügt, um die Abmessungen einer Anzeige anhand ihrer 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 zu „Öffentlich“ geändert, aber nicht ausgeblendet (Ic48a1).

Fehlerkorrekturen

  • Die MotionEvent-Injektion wurde aktualisiert, um die Flüchtigkeit zu reduzieren, indem die Gestengenauigkeit gegenüber Geschwindigkeit priorisiert wird (678ca3).
  • Tracing für ressourcenintensive Methoden zur Identifizierung von Leistungsengpässen hinzugefügt (d17de3)
  • Es wurde ein Wiederholungsmechanismus beim Initiieren einer UiAutomation-Verbindung hinzugefügt (048caf).
  • Eine mögliche NPE aus Null-Knoten in UiDevice#dumpWindowHierarchy (b725eb) wurde behoben.
  • Unerwartete Fehler bei Abfragen oder Betrieb auf privaten Bildschirmen (985db6, 7053d4) wurden behoben.

Version 2.3.0-alpha03

19. April 2023

androidx.test.uiautomator:uiautomator:2.3.0-alpha03 wird freigegeben. Version 2.3.0-alpha03 enthält diese Commits.

API-Änderungen

  • Es wurde eine Condition-Schnittstelle bereitgestellt, um benutzerdefinierte Wartebedingungen zuzulassen, anstatt sich ausschließlich 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 Scrollen zu unterstützen, bis eine Bedingung erfüllt ist, und um eine Übereinstimmung mit UiScrollable (099d6e) zu erreichen.
  • UiDevice#setOrientationPortrait und setOrientationLandscape wurden hinzugefügt, um die Rotation über verschiedene 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

  • UiScrollable-Methoden mit gelegentlichen ungültigen Koordinaten in SDKs 18 bis 22 (b53ece) wurden korrigiert.
  • Es wurde behoben, dass UiObject2#setText und clearText den Text in den SDKs 18 und 19 nicht ändern konnten (77e41d).
  • Das Problem mit UiWatchers wurde behoben, das nicht in der richtigen Reihenfolge ausgeführt wurde (c85f92).
  • Ein Problem wurde behoben, bei dem die Gerätedrehung nach einer Änderung der Ausrichtung von UiDevice (c6cea0) möglicherweise noch nicht abgeschlossen war.
  • 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 freigegeben. 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. durch Drücken der Ein-/Aus- und VOLUME_DOWN-Tasten für einen Screenshot (22e525).
  • UiDevice#setCompressedLayoutHierarchy wurde hinzugefügt und UiDevice#setCompressedLayoutHeirarchy wurde verworfen, um einen Tippfehler im Methodennamen (4e2f65) zu beheben.
  • UiAutomatorInstrumentationTestRunner wurde als verworfen gekennzeichnet, da es verworfene UiAutomatorTestCases verarbeitet und nicht mehr erforderlich ist (be6c85).
  • Die Verzögerung zwischen UiObject2 MotionEvent s wurde auf die doppelte Aktualisierungsrate des Displays aktualisiert, um Nutzergesten besser zu emulieren (454450).
  • Unterstützung für den Abgleich mehrzeiliger Texte und Beschreibungen (1625e6, b/255787130) wurde hinzugefügt.

Fehlerkorrekturen

  • Es wurde behoben, dass beim Abfragen oder Warten auf Objekte (4cbcc0) gelegentlich StaleObjectExceptions ausgegeben wurden.
  • Die Rückgabewerte von UiScrollable#scrollToBeginning, scrollToEnd, flingToBeginning und flingToEnd wurden korrigiert, die nicht angeben, ob Anfang/Ende erreicht wurde (d33e06).
  • Das Problem mit den Methoden UiScrollable#scrollForward und scrollBackward wurde behoben, bei denen das konfigurierte Zeitlimit (29e4f3) ignoriert wurde.
  • Der BySelector-Kopierkonstruktor verarbeitet keine Tiefenselektoren (6c7b91).
  • Die Verarbeitung ungültiger Prozentwerte in UiObject#pinchIn und pinchOut (01b973) wurde korrigiert.
  • Ein seltenes Problem wurde behoben, bei dem die Unterstützung des Mehrfenstermodus 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 freigegeben. Version 2.3.0-alpha01 enthält diese Commits.

API-Änderungen

  • Die NULL-Werte aller öffentlichen Methoden wurden annotiert.
  • Die MotionEvent-Injektion wurde mit einer kurzen Verzögerung für gleichmäßigere UiObject2-Gesten auf den asynchronen Modus umgestellt.
  • Das Abfrageintervall wurde beim Warten von 1.000 ms auf 100 ms reduziert.
  • Wir haben UiDevice#wakeUp und UiDevice#sleep aktualisiert, sodass KEYCODE_WAKEUP und KEYCODE_SLEEP verwendet werden können, um Geräte zu unterstützen, die die Ein/Aus-Taste überschreiben.
  • UiObject2#getDisplayId und Unterstützung für das Suchen und Verwalten von Objekten auf mehreren Bildschirmen wurden hinzugefügt.
  • Die Methoden UiObject#click und UiObject2#clickAndWait zum Klicken auf einen Punkt mithilfe seiner Koordinaten wurden hinzugefügt.

Fehlerkorrekturen

  • Die Berechnung der Anzeigegröße war gelegentlich falsch und Teile des Bildschirms wurden unter Umständen ignoriert, insbesondere im Mehrfenstermodus (Ifc016c).
  • Die Skalierung von Screenshots in UiDevice#takeScreenshot (Id80ad6) wurde korrigiert.
  • Die Zuverlässigkeit von Until.scrollFinished und UiObject2#scroll wurde verbessert (I7b0595).
  • IncorrectContextUseViolation-Warnungen im strikten Modus (Iffa6a0) wurden behoben.