測試 Uiautomator

  
測試跨應用程式功能 UI 架構
最近更新時間 穩定版 候選版 Beta 版 Alpha 版
2024 年 6 月 26 日 2.3.0 - - 2.4.0-alpha01 版

宣告依附元件

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

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

Groovy

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

Kotlin

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

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

意見回饋

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

建立新問題

詳情請參閱 Issue Tracker 說明文件

2.4 版

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)。
  • 定期撤銷無障礙功能快取 (I3be25),減少特定 UI 上無障礙節點過時的問題。
  • 修正了在過時 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 在重新建立 UiDevice 時使用過時的 Instrumentation 執行個體的問題 (I18cae)。
  • 修正在傾印節點時無法判斷顯示 ID 時可能發生的 NPE (Icafcb)。
  • 在無法點擊/捲動的物件上執行點擊/捲動時會顯示警告 (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)。