測試 Uiautomator

  
測試跨應用程式功能 UI 架構
最近更新時間 穩定版 候選版 Beta 版 Alpha 版
2025 年 5 月 7 日 2.3.0 - - 2.4.0-alpha02

宣告依附元件

如果要為測試新增依附元件,您必須將 Google Maven 存放區新增至專案。詳情請參閱「Google 的 Maven 存放區」一節。

在應用程式或模組的 build.gradle 檔案中,新增所需構件的依附元件:

Groovy

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

如要進一步瞭解依附元件,請參閱「新增建構依附元件」一文。

意見回饋

您的意見可協助我們改善 Jetpack。如果您發現新問題,或是有改進這個程式庫的建議,請告訴我們。回報新問題前,請先查看這個程式庫的現有問題。只要按一下星號按鈕,即可投票給現有的問題。

建立新問題

詳情請參閱 Issue Tracker 說明文件

2.4 版

2.4.0-alpha02 版

2025 年 5 月 7 日

發布 androidx.test.uiautomator:uiautomator:2.4.0-alpha02。2.4.0-alpha02 版包含這些修訂版本

新功能

  • Uiautomator API 的初始形狀。UiAutomatorTestScope 可透過工廠 uiAutomator 建立,該工廠可提供新的 onView API 存取權。
  • 初始 Lint 規則,可針對 AccessibilityNodeInfo#getText 的用法發出警告,並建議使用 textAsString

API 變更

  • 新增 Configurator#setDefaultDisplayId 來設定顯示 ID,將所有搜尋限制在 (Icdf17)。
  • 為方便起見,將 Searchable (UiDeviceUiObject2 共用的介面) 變更為公開 (I67f18)。

修正錯誤

  • 修正了 UiDevice#pressKeyCodes 中 Meta 鍵的處理方式。(I73f80)。
  • 更新 UiDevice#getWindowRoots,一律以 Z 順序傳回根目錄 (I87426)。
  • 修正了某些手勢不完整的問題 (I60dd3If4edd)。
  • 修正了在呼叫 UiDevice#scrollUntil 時發生的罕見無限迴圈問題 (I39989)。

2.4.0-alpha01 版

2024 年 6 月 26 日

發布 androidx.test.uiautomator:uiautomator:2.4.0-alpha01。2.4.0-alpha01 版包含這些修訂項目

API 變更

  • 已淘汰 Configurator#getKeyInjectionDelaysetKeyInjectionDelay,因為文字一律會直接插入,而非透過按鍵插入,因此參數已不再使用。(I3bcc5)。

修正錯誤

  • 更新 UiObject2 動作事件之間的延遲時間,以考量動態刷新率 (例如流暢顯示) (I43f12)。
  • 定期使無障礙工具快取無效,以減少特定 UI 上無障礙節點失效的問題 (I3be25)。
  • 修正在陳舊 UiObject2 上呼叫 toStringhashCode 時發生的 StaleObjectException。(I38ea1)。
  • 略過不必要的 waitForIdle 呼叫,改善 UiWatcher 效能。(I8c65e)。
  • 已修正 Javadoc 不準確的問題,特別是針對每個 Configurator 參數的使用時機進行說明。(Ie10b1I71631)。

2.3.0 版本

2.3.0 版本

2024 年 2 月 21 日

發布 androidx.test.uiautomator:uiautomator:2.3.02.3.0 版包含此連結所列的修訂項目。

自 2.2.0 版以來的重要變更

  • 多螢幕支援功能:新增跨螢幕尋找及操作物件的支援功能,以及用於管理次要螢幕的 UiDevice 方法 (Ie6544I912cd)。
  • 新選取器
    • 新增 By.displayId,可依顯示 ID 選取物件 (I1825b)。
    • 新增 By.hasParentBy.hasAncestor,根據父項選取物件 (I93c36)。
    • 新增 By.hint 方法,可根據提示文字選取物件 (Idd345)。
  • 自訂條件:公開 Condition 介面以支援自訂等待條件,並新增對應的 UiDevice#waitUiObject2#waitUiObject2#scrollUntil 方法 (27c0ea099d6e)。
  • 修正錯誤並提升可靠性
    • 修正問題:系統以往偶有螢幕大小計算錯誤的情況,也可能會忽略螢幕的某些部分 (Ifc016)。您可能需要調整測試中使用的座標和偏移量。
    • 更新 MotionEvent 注入功能,提高準確度 (678ca3) 並更貼切模擬使用者手勢 (454450)。
    • 提升捲動 (I7b059)、旋轉 (c6cea0)、長按 (49572b)、捏合 (3c619a) 等功能的穩定性。

2.3.0-rc01 版

2024 年 2 月 7 日

androidx.test.uiautomator:uiautomator:2.3.0-rc01 發布,內容無變更。2.3.0-rc01 版包含此連結所列的修訂項目。

2.3.0-beta01 版本

2023 年 12 月 13 日

發布 androidx.test.uiautomator:uiautomator:2.3.0-beta012.3.0-beta01 版包含此連結所列的修訂項目。

API 變更

  • 為求一致,請將 UiObject2 百分比邊界方法重新命名為 setGestureMarginPercentagesetGestureMarginsPercentage (I24435)

修正錯誤

  • 改善找不到或無法存取次要螢幕時擲回的錯誤 (116b23)

2.3.0-alpha05 版本

2023 年 11 月 1 日

發布 androidx.test.uiautomator:uiautomator:2.3.0-alpha05查看 2.3.0-alpha05 版的修訂項

API 變更

  • 新增 UiObject2#getDrawingOrder,以便顯示繪圖順序 (z-index) 資訊。(I5dfa4)。
  • 新增 UiDevice 方法,用於取得、設定、凍結及解凍次要螢幕的旋轉。(I912cd)。

修正錯誤

  • 在無法偵測捲動結束時,新增重試至 UiObject2#scrollUntil (Ibac6f)。
  • 修正 UiDevice 在重建時會使用過時的 Instrumentation 例項的問題 (I18cae)。
  • 修正了在轉儲節點時無法判斷顯示 ID 的情況 (Icafcb),這可能會導致 NPE。
  • 在非可點選/捲動的物件上執行點擊/捲動動作時,新增警告 (I4a5d9)。
  • 降低預設 UiObject2 捲動速度,以提高穩定性 (I5e071)。

2.3.0-alpha04 版本

2023 年 7 月 26 日

發布 androidx.test.uiautomator:uiautomator:2.3.0-alpha042.3.0-alpha04 版包含此連結所列的修訂項目。

API 變更

  • 新增 By.hasParentBy.hasAncestor,支援依據父項尋找物件 (I93c36)。
  • 新增 UiObject2#getHint 以擷取物件的提示文字,以及 By.hint 方法,以便根據提示文字選取物件 (Idd345)。
  • 新增 By.displayId,支援根據顯示器選取物件 (I1825b)。
  • 新增 UiDevice#getDisplayHeight(int)UiDevice#getDisplayWidth(int) 方法,可根據 ID (Ie6544) 找出螢幕的尺寸。
  • 重新加入 wait(SearchCondition, long)wait(UiObject2Condition, long) 方法,以確保回溯相容性 (Iebfda)。
  • UiDevice#executeShellCommand 變更為公用,但不建議使用,而非隱藏 (Ic48a1)。

修正錯誤

  • 更新 MotionEvent 注入作業,將手勢精確度優先於速度,以減少不穩定情形 (678ca3)。
  • 為資源密集方法新增追蹤功能,以便找出效能瓶頸 (d17de3)。
  • 在啟動 UiAutomation 連線時新增重試機制 (048caf)。
  • 修正 UiDevice#dumpWindowHierarchy 中空值節點可能發生的 NPE (b725eb)。
  • 修正私人螢幕查詢或操作時發生的意外錯誤 (985db67053d4)。

2.3.0-alpha03 版本

2023 年 4 月 19 日

發布 androidx.test.uiautomator:uiautomator:2.3.0-alpha03查看 2.3.0-alpha03 版的修訂項

API 變更

  • 公開 Condition 介面,允許自訂等待條件,而非僅依賴 Until 中的內建項目,並更新 UiDevice#waitUiObject2#wait 方法以接受此介面 (27c0ea)。
  • 新增 UiObject2#scrollUntil,支援捲動至符合條件為止,並與 UiScrollable 達到相同的功能 (099d6e)。
  • 新增 UiDevice#setOrientationPortraitsetOrientationLandscape,以利跨裝置類型的旋轉 (e13cb7)。
  • 新增 UiObject2#setGestureMarginPercent,支援設定相對於物件大小的外邊距。(Ib8c77)。

修正錯誤

  • 修正 UiScrollable 方法在 SDK 18 到 22 (b53ece) 上偶爾使用無效座標的問題。
  • 修正 UiObject2#setTextclearText 無法在 SDK 18 和 19 上修改文字的問題 (77e41d)。
  • 修正 UiWatcher 未以正確順序執行的問題 (c85f92)。
  • 修正 UiDevice 方向變更後,裝置旋轉可能尚未完成的問題 (c6cea0)。
  • 改善了長按、拖曳和捏合功能的可靠性 (49572b3c619a)。

2.3.0-alpha02 版

2023 年 1 月 11 日

發布 androidx.test.uiautomator:uiautomator:2.3.0-alpha022.3.0-alpha02 版包含此連結所列的修訂項目。

API 變更

  • 重新調整整個程式庫的記錄功能,提供更多資訊、針對潛在問題發出警告,並改善一致性。
  • 新增 UiDevice#pressKeyCodes,支援同時按下多個按鍵,例如按下 POWER 鍵和 VOLUME_DOWN 鍵來擷取螢幕截圖 (22e525)。
  • 新增 UiDevice#setCompressedLayoutHierarchy 並淘汰 UiDevice#setCompressedLayoutHeirarchy,修正方法名稱中的錯字 (4e2f65)。
  • 由於 UiAutomatorInstrumentationTestRunner 會處理已淘汰的 UiAutomatorTestCase,因不再需要而標示為已淘汰 (be6c85)。
  • UiObject2 MotionEvent 之間的延遲時間更新為螢幕刷新率的兩倍,更加貼切模擬使用者手勢 (454450)。
  • 新增對多行文字和說明比對的支援 (1625e6b/255787130)。

修正錯誤

  • 修正在查詢或等待物件時,有時會擲回 StaleObjectException 的問題 (4cbcc0)。
  • 修正 UiScrollable#scrollToBeginningscrollToEndflingToBeginningflingToEnd 的傳回值不會指出是否已到達開端/尾端的問題 (d33e06)。
  • 修正 UiScrollable#scrollForwardscrollBackward 方法忽略所設逾時的問題 (29e4f3)。
  • 修正 BySelector 複製建構函式無法處理深度選取器的問題 (6c7b91)。
  • 修正 UiObject#pinchInpinchOut 中無效百分比值的處理方式 (01b973)。
  • 修正在極罕見情況下,重設基礎 UiAutomation 連線後發生無法支援多視窗模式的問題 (1bb956)。

2.3.0-alpha01 版本

2022 年 9 月 7 日

發布 androidx.test.uiautomator:uiautomator:2.3.0-alpha012.3.0-alpha01 版本包含這些修訂項目

API 變更

  • 為所有公開方法的空值加註。
  • 加上短暫延遲將 MotionEvent 插入變成非同步狀態,讓 UiObject2 手勢更順暢。
  • 減少輪詢間隔,同時將等待時間從 1000 毫秒縮短成 100 毫秒。
  • 更新 UiDevice#wakeUpUiDevice#sleep,現在使用 KEYCODE_WAKEUPKEYCODE_SLEEP 支援會覆寫電源鍵功能的裝置。
  • 新增 UiObject2#getDisplayId 並支援尋找及管理跨螢幕的物件。
  • 新增 UiObject#clickUiObject2#clickAndWait 方法,現在可以使用座標點選一個點。

修正錯誤

  • 修正問題:系統以往偶有螢幕大小計算錯誤的情況,也可能會忽略螢幕的某些部分 (尤其是在多視窗模式下),這些問題現在已經修正 (Ifc016c)。
  • 修正 UiDevice#takeScreenshot 中的螢幕截圖資源調度 (Id80ad6)。
  • 提升 Until.scrollFinishedUiObject2#scroll 的穩定性 (I7b0595)。
  • 修正嚴格模式 IncorrectContextUseViolation 警告 (Iffa6a0)。