測試 Uiautomator

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

宣告依附元件

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

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

Groovy

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

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

意見回饋

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

建立新問題

詳情請參閱 Issue Tracker 說明文件

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 時可能出現的 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)。