Test Uiautomator

  
Framework per i test dell'interfaccia utente funzionale tra app
Ultimo aggiornamento Release stabile Candidato per la release Versione beta Versione alpha
7 maggio 2025 2.3.0 - - 2.4.0-alpha02

Dichiarazione delle dipendenze

Per aggiungere una dipendenza al test, devi aggiungere il repository Maven di Google al tuo progetto. Per ulteriori informazioni, consulta il repository Maven di Google.

Aggiungi le dipendenze per gli elementi necessari nel file build.gradle per la tua app o il tuo modulo:

Alla moda

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

Per ulteriori informazioni sulle dipendenze, consulta Aggiungere dipendenze di compilazione.

Feedback

Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se riscontri nuovi problemi o hai idee per migliorare questa raccolta. Prima di crearne uno nuovo, dai un'occhiata ai problemi esistenti in questa raccolta. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a forma di stella.

Creare un nuovo problema

Per ulteriori informazioni, consulta la documentazione del Tracker dei problemi.

Versione 2.4

Versione 2.4.0-alpha02

7 maggio 2025

androidx.test.uiautomator:uiautomator:2.4.0-alpha02 viene rilasciato. La versione 2.4.0-alpha02 contiene questi commit.

Nuove funzionalità

  • Forma iniziale della nuova API Uiautomator. UiAutomatorTestScope può essere creato tramite la factory uiAutomator che consente l'accesso alle nuove API onView.
  • Regole Lint iniziali per avvisare sull'utilizzo di AccessibilityNodeInfo#getText e suggerire l'utilizzo di textAsString.

Modifiche all'API

  • È stato aggiunto Configurator#setDefaultDisplayId per impostare un ID display per limitare tutte le ricerche a (Icdf17).
  • Per praticità, è stata impostata come pubblica la proprietà Searchable (interfaccia condivisa da UiDevice e UiObject2) (I67f18).

Correzioni di bug

  • È stata corretta la gestione delle chiavi meta in UiDevice#pressKeyCodes. (I73f80).
  • È stato aggiornato UiDevice#getWindowRoots in modo che restituisca sempre le radici in ordine Z (I87426).
  • Risolto un problema per cui alcuni gesti non erano completi (I60dd3, If4edd).
  • È stato corretto un raro loop infinito durante la chiamata a UiDevice#scrollUntil (I39989).

Versione 2.4.0-alpha01

26 giugno 2024

androidx.test.uiautomator:uiautomator:2.4.0-alpha01 viene rilasciato. La versione 2.4.0-alpha01 contiene questi commit.

Modifiche all'API

  • Configurator#getKeyInjectionDelay e setKeyInjectionDelay sono stati ritirati perché il parametro non è più utilizzato ora che il testo viene sempre inserito direttamente anziché tramite le pressioni dei tasti. (I3bcc5).

Correzioni di bug

  • È stato aggiornato il ritardo tra gli eventi di movimento UiObject2 per tenere conto delle frequenze di aggiornamento dinamiche (ad es. Display fluido) (I43f12).
  • Riduzione dell'instabilità dovuta all'obsolescenza dei nodi di accessibilità in alcune UI mediante l'invalidazione periodica della cache di accessibilità (I3be25).
  • Sono stati corretti gli errori StaleObjectException che si verificano quando si chiama toString o hashCode su un UiObject2 non aggiornato. (I38ea1).
  • Miglioramento delle prestazioni di UiWatcher saltando le chiamate waitForIdle non necessarie. (I8c65e).
  • Sono state corrette le imprecisioni del javadoc, in particolare per chiarire quando viene utilizzato ciascun parametro Configurator. (Ie10b1, I71631).

Versione 2.3.0

Versione 2.3.0

21 febbraio 2024

androidx.test.uiautomator:uiautomator:2.3.0 viene rilasciato. La versione 2.3.0 contiene questi commit.

Modifiche importanti dalla versione 2.2.0

  • Supporto di più display: è stato aggiunto il supporto per la ricerca e l'utilizzo di oggetti su più display, nonché metodi UiDevice per gestire i display secondari (Ie6544, I912cd).
  • Nuovi selettori:
    • È stato aggiunto By.displayId per selezionare gli oggetti in base al relativo ID visualizzato (I1825b).
    • Sono stati aggiunti By.hasParent e By.hasAncestor per selezionare gli oggetti in base ai relativi oggetti principali (I93c36).
    • Sono stati aggiunti metodi By.hint per selezionare gli oggetti in base al testo del suggerimento (Idd345).
  • Condizioni personalizzate: è stata esposta un'interfaccia Condition per supportare le condizioni di attesa personalizzate e sono stati aggiunti i metodi UiDevice#wait, UiObject2#wait e UiObject2#scrollUntil corrispondenti (27c0ea, 099d6e).
  • Correzioni di bug e affidabilità
    • È stato risolto un problema per cui i calcoli delle dimensioni del display erano a volte errati e potevano ignorare parti dello schermo (Ifc016). Potrebbe essere necessario modificare le coordinate e gli offset utilizzati nei test.
    • È stata aggiornata l'iniezione di MotionEvent per migliorare l'accuratezza (678ca3) ed emulare meglio i gesti dell'utente (454450).
    • È stata migliorata l'affidabilità di scorrimenti (I7b059), rotazioni (c6cea0), clic lunghi (49572b), pizzichi (3c619a) e altro ancora.

Versione 2.3.0-rc01

7 febbraio 2024

androidx.test.uiautomator:uiautomator:2.3.0-rc01 viene rilasciato senza modifiche. La versione 2.3.0-rc01 contiene questi commit.

Versione 2.3.0-beta01

13 dicembre 2023

androidx.test.uiautomator:uiautomator:2.3.0-beta01 viene rilasciato. La versione 2.3.0-beta01 contiene questi commit.

Modifiche all'API

  • Per motivi di coerenza, i metodi di margine basati su percentuale UiObject2 sono stati rinominati in setGestureMarginPercentage e setGestureMarginsPercentage (I24435)

Correzioni di bug

  • È stato migliorato l'errore generato quando un display secondario non viene trovato o non è accessibile (116b23)

Versione 2.3.0-alpha05

1° novembre 2023

androidx.test.uiautomator:uiautomator:2.3.0-alpha05 viene rilasciato. La versione 2.3.0-alpha05 contiene questi commit.

Modifiche all'API

  • È stato aggiunto UiObject2#getDrawingOrder per mostrare le informazioni sull'ordine di disegno (indice z). (I5dfa4).
  • Sono stati aggiunti metodi UiDevice per ottenere, impostare, bloccare e sbloccare la rotazione dei display secondari. (I912cd).

Correzioni di bug

  • È stato aggiunto un nuovo tentativo a UiObject2#scrollUntil quando non è stato possibile rilevare la fine dello scorrimento (Ibac6f).
  • È stato risolto un problema per cui UiDevice utilizzava un'istanza Instrumentation obsoleta se veniva ricreata (I18cae).
  • È stato corretto un possibile errore NPE se non è possibile determinare l'ID visualizzato durante il dumping dei nodi (Icafcb).
  • È stato aggiunto un avviso quando vengono eseguiti clic/scorrimenti su oggetti non cliccabili/scorrevoli (I4a5d9).
  • È stata ridotta la velocità di scorrimento predefinita UiObject2 per migliorare l'affidabilità (I5e071).

Versione 2.3.0-alpha04

26 luglio 2023

androidx.test.uiautomator:uiautomator:2.3.0-alpha04 viene rilasciato. La versione 2.3.0-alpha04 contiene questi commit.

Modifiche all'API

  • Sono stati aggiunti By.hasParent e By.hasAncestor per supportare la ricerca degli oggetti in base ai relativi elementi principali (I93c36).
  • È stato aggiunto UiObject2#getHint per recuperare il testo di un suggerimento di un oggetto e i metodi By.hint per selezionare gli oggetti in base al loro testo di suggerimento (Idd345).
  • È stato aggiunto By.displayId per supportare la selezione degli oggetti in base al display su cui si trovano (I1825b).
  • Sono stati aggiunti i metodi UiDevice#getDisplayHeight(int) e UiDevice#getDisplayWidth(int) per trovare le dimensioni di un display in base al relativo ID (Ie6544).
  • Metodi wait(SearchCondition, long) e wait(UiObject2Condition, long) aggiunti di nuovo per la compatibilità con le versioni precedenti (Iebfda).
  • UiDevice#executeShellCommand è stato impostato come pubblico, ma scoraggiato anziché nascosto (Ic48a1).

Correzioni di bug

  • È stata aggiornata l'iniezione di MotionEvent per ridurre l'incostanza dando la priorità all'accuratezza dei gesti rispetto alla velocità (678ca3).
  • È stato aggiunto il monitoraggio ai metodi che richiedono molte risorse per identificare i colli di bottiglia delle prestazioni (d17de3).
  • È stato aggiunto un meccanismo di ripetizione quando si avvia una connessione UiAutomation (048caf).
  • È stato corretto un possibile NPE da nodi null in UiDevice#dumpWindowHierarchy (b725eb).
  • Sono stati corretti errori imprevisti dovuti a query o operazioni su display privati (985db6, 7053d4).

Versione 2.3.0-alpha03

19 aprile 2023

androidx.test.uiautomator:uiautomator:2.3.0-alpha03 viene rilasciato. La versione 2.3.0-alpha03 contiene questi commit.

Modifiche all'API

  • È stata esposta un'interfaccia Condition per consentire condizioni di attesa personalizzate anziché fare affidamento esclusivamente su quelle predefinite in Until e sono stati aggiornati i metodi UiDevice#wait e UiObject2#wait per accettare questa interfaccia (27c0ea).
  • È stato aggiunto UiObject2#scrollUntil per supportare lo scorrimento fino a quando non viene soddisfatta una condizione e per raggiungere la parità con UiScrollable (099d6e).
  • Sono stati aggiunti UiDevice#setOrientationPortrait e setOrientationLandscape per facilitare le rotazioni tra i tipi di dispositivi (e13cb7).
  • È stato aggiunto UiObject2#setGestureMarginPercent per supportare l'impostazione dei margini in base alle dimensioni dell'oggetto. (Ib8c77)

Correzioni di bug

  • Sono stati corretti i metodi UiScrollable che a volte utilizzano coordinate non valide negli SDK da 18 a 22 (b53ece).
  • È stato corretto il problema di mancata modifica del testo da parte di UiObject2#setText e clearText negli SDK 18 e 19 (77e41d).
  • È stato corretto il problema relativo all'esecuzione dei UiWatcher nell'ordine sbagliato (c85f92).
  • È stato risolto il problema per cui la rotazione del dispositivo potrebbe non essere ancora completata dopo una modifica dell'orientamento di UiDevice (c6cea0).
  • Aumento dell'affidabilità di clic, trascinamenti e pizzichi prolungati (49572b, 3c619a).

Versione 2.3.0-alpha02

11 gennaio 2023

androidx.test.uiautomator:uiautomator:2.3.0-alpha02 viene rilasciato. La versione 2.3.0-alpha02 contiene questi commit.

Modifiche all'API

  • Il logging è stato rielaborato in tutta la libreria per fornire maggiori informazioni, avvisare di possibili problemi e migliorare la coerenza.
  • È stato aggiunto UiDevice#pressKeyCodes per supportare la pressione di più tasti contemporaneamente, ad esempio la pressione di POWER e VOLUME_DOWN per acquisire uno screenshot (22e525).
  • È stato aggiunto UiDevice#setCompressedLayoutHierarchy e ritirato UiDevice#setCompressedLayoutHeirarchy per correggere un errore ortografico nel nome del metodo (4e2f65).
  • UiAutomatorInstrumentationTestRunner è stato contrassegnato come deprecato perché gestisce i UiAutomatorTestCase deprecati e non è più necessario (be6c85).
  • Il ritardo tra i UiObject2 MotionEvent è stato aggiornato al doppio della frequenza di aggiornamento del display per emulare meglio i gesti dell'utente (454450).
  • È stato aggiunto il supporto della corrispondenza del testo e della descrizione a più righe (1625e6, b/255787130).

Correzioni di bug

  • È stato corretto il problema per cui a volte venivano generati StaleObjectException durante l'esecuzione di query o in attesa di oggetti (4cbcc0).
  • Sono stati corretti i valori restituiti di UiScrollable#scrollToBeginning, scrollToEnd, flingToBeginning e flingToEnd che non indicano se è stato raggiunto l'inizio/la fine (d33e06).
  • Sono stati corretti i metodi UiScrollable#scrollForward e scrollBackward che ignoravano il timeout configurato (29e4f3).
  • È stato corretto il problema per cui il costruttore di copia di BySelector non gestiva i selettori di profondità (6c7b91).
  • È stato corretto il trattamento dei valori percentuali non validi in UiObject#pinchIn e pinchOut (01b973).
  • È stato risolto un raro problema per cui il supporto multi-finestra andava perso se la connessione UiAutomation sottostante veniva reimpostata (1bb956).

Versione 2.3.0-alpha01

7 settembre 2022

androidx.test.uiautomator:uiautomator:2.3.0-alpha01 viene rilasciato. La versione 2.3.0-alpha01 contiene questi commit.

Modifiche all'API

  • È stata annotata la nullità di tutti i metodi pubblici.
  • È stata impostata l'iniezione MotionEvent su asincrona con un breve ritardo per gesti UiObject2 più fluidi.
  • L'intervallo di polling in attesa è stato ridotto da 1000 ms a 100 ms.
  • UiDevice#wakeUp e UiDevice#sleep sono stati aggiornati in modo da utilizzare KEYCODE_WAKEUP e KEYCODE_SLEEP per supportare i dispositivi che sostituiscono il tasto di accensione.
  • È stato aggiunto UiObject2#getDisplayId e il supporto per trovare e gestire gli oggetti su più display.
  • Sono stati aggiunti i metodi UiObject#click e UiObject2#clickAndWait per fare clic su un punto utilizzando le relative coordinate.

Correzioni di bug

  • È stato risolto un problema per cui i calcoli delle dimensioni del display erano a volte errati e potevano ignorare parti dello schermo, in particolare in modalità multifinestra (Ifc016c).
  • È stato corretto il ridimensionamento degli screenshot in UiDevice#takeScreenshot (Id80ad6).
  • È stata migliorata l'affidabilità di Until.scrollFinished e UiObject2#scroll (I7b0595).
  • Sono stati corretti gli avvisi IncorrectContextUseViolation relativi alla modalità rigorosa (Iffa6a0).