測試 Uiautomator
最近更新時間 | 穩定版 | 候選版 | 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
(UiDevice
和UiObject2
共用的介面) 變更為公開 (I67f18)。
修正錯誤
- 修正了
UiDevice#pressKeyCodes
中 Meta 鍵的處理方式。(I73f80)。 - 更新
UiDevice#getWindowRoots
,一律以 Z 順序傳回根目錄 (I87426)。 - 修正了某些手勢不完整的問題 (I60dd3、If4edd)。
- 修正了在呼叫
UiDevice#scrollUntil
時發生的罕見無限迴圈問題 (I39989)。
2.4.0-alpha01 版
2024 年 6 月 26 日
發布 androidx.test.uiautomator:uiautomator:2.4.0-alpha01
。2.4.0-alpha01 版包含這些修訂項目。
API 變更
- 已淘汰
Configurator#getKeyInjectionDelay
和setKeyInjectionDelay
,因為文字一律會直接插入,而非透過按鍵插入,因此參數已不再使用。(I3bcc5)。
修正錯誤
- 更新
UiObject2
動作事件之間的延遲時間,以考量動態刷新率 (例如流暢顯示) (I43f12)。 - 定期使無障礙工具快取無效,以減少特定 UI 上無障礙節點失效的問題 (I3be25)。
- 修正在陳舊
UiObject2
上呼叫toString
或hashCode
時發生的StaleObjectException
。(I38ea1)。 - 略過不必要的
waitForIdle
呼叫,改善UiWatcher
效能。(I8c65e)。 - 已修正 Javadoc 不準確的問題,特別是針對每個
Configurator
參數的使用時機進行說明。(Ie10b1、I71631)。
2.3.0 版本
2.3.0 版本
2024 年 2 月 21 日
發布 androidx.test.uiautomator:uiautomator:2.3.0
。2.3.0 版包含此連結所列的修訂項目。
自 2.2.0 版以來的重要變更
- 多螢幕支援功能:新增跨螢幕尋找及操作物件的支援功能,以及用於管理次要螢幕的
UiDevice
方法 (Ie6544、I912cd)。 - 新選取器:
- 自訂條件:公開
Condition
介面以支援自訂等待條件,並新增對應的UiDevice#wait
、UiObject2#wait
和UiObject2#scrollUntil
方法 (27c0ea、099d6e)。 - 修正錯誤並提升可靠性
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-beta01
。2.3.0-beta01 版包含此連結所列的修訂項目。
API 變更
- 為求一致,請將
UiObject2
百分比邊界方法重新命名為setGestureMarginPercentage
和setGestureMarginsPercentage
(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-alpha04
。2.3.0-alpha04 版包含此連結所列的修訂項目。
API 變更
- 新增
By.hasParent
和By.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)。 - 修正私人螢幕查詢或操作時發生的意外錯誤 (985db6、7053d4)。
2.3.0-alpha03 版本
2023 年 4 月 19 日
發布 androidx.test.uiautomator:uiautomator:2.3.0-alpha03
。查看 2.3.0-alpha03 版的修訂項。
API 變更
- 公開
Condition
介面,允許自訂等待條件,而非僅依賴Until
中的內建項目,並更新UiDevice#wait
和UiObject2#wait
方法以接受此介面 (27c0ea)。 - 新增
UiObject2#scrollUntil
,支援捲動至符合條件為止,並與UiScrollable
達到相同的功能 (099d6e)。 - 新增
UiDevice#setOrientationPortrait
和setOrientationLandscape
,以利跨裝置類型的旋轉 (e13cb7)。 - 新增
UiObject2#setGestureMarginPercent
,支援設定相對於物件大小的外邊距。(Ib8c77)。
修正錯誤
- 修正
UiScrollable
方法在 SDK 18 到 22 (b53ece) 上偶爾使用無效座標的問題。 - 修正
UiObject2#setText
和clearText
無法在 SDK 18 和 19 上修改文字的問題 (77e41d)。 - 修正
UiWatcher
未以正確順序執行的問題 (c85f92)。 - 修正
UiDevice
方向變更後,裝置旋轉可能尚未完成的問題 (c6cea0)。 - 改善了長按、拖曳和捏合功能的可靠性 (49572b、3c619a)。
2.3.0-alpha02 版
2023 年 1 月 11 日
發布 androidx.test.uiautomator:uiautomator:2.3.0-alpha02
。2.3.0-alpha02 版包含此連結所列的修訂項目。
API 變更
- 重新調整整個程式庫的記錄功能,提供更多資訊、針對潛在問題發出警告,並改善一致性。
- 新增
UiDevice#pressKeyCodes
,支援同時按下多個按鍵,例如按下 POWER 鍵和 VOLUME_DOWN 鍵來擷取螢幕截圖 (22e525)。 - 新增
UiDevice#setCompressedLayoutHierarchy
並淘汰UiDevice#setCompressedLayoutHeirarchy
,修正方法名稱中的錯字 (4e2f65)。 - 由於
UiAutomatorInstrumentationTestRunner
會處理已淘汰的UiAutomatorTestCase
,因不再需要而標示為已淘汰 (be6c85)。 - 將
UiObject2
MotionEvent
之間的延遲時間更新為螢幕刷新率的兩倍,更加貼切模擬使用者手勢 (454450)。 - 新增對多行文字和說明比對的支援 (1625e6、b/255787130)。
修正錯誤
- 修正在查詢或等待物件時,有時會擲回
StaleObjectException
的問題 (4cbcc0)。 - 修正
UiScrollable#scrollToBeginning
、scrollToEnd
、flingToBeginning
和flingToEnd
的傳回值不會指出是否已到達開端/尾端的問題 (d33e06)。 - 修正
UiScrollable#scrollForward
和scrollBackward
方法忽略所設逾時的問題 (29e4f3)。 - 修正
BySelector
複製建構函式無法處理深度選取器的問題 (6c7b91)。 - 修正
UiObject#pinchIn
和pinchOut
中無效百分比值的處理方式 (01b973)。 - 修正在極罕見情況下,重設基礎
UiAutomation
連線後發生無法支援多視窗模式的問題 (1bb956)。
2.3.0-alpha01 版本
2022 年 9 月 7 日
發布 androidx.test.uiautomator:uiautomator:2.3.0-alpha01
。2.3.0-alpha01 版本包含這些修訂項目。
API 變更
- 為所有公開方法的空值加註。
- 加上短暫延遲將
MotionEvent
插入變成非同步狀態,讓UiObject2
手勢更順暢。 - 減少輪詢間隔,同時將等待時間從 1000 毫秒縮短成 100 毫秒。
- 更新
UiDevice#wakeUp
和UiDevice#sleep
,現在使用KEYCODE_WAKEUP
和KEYCODE_SLEEP
支援會覆寫電源鍵功能的裝置。 - 新增
UiObject2#getDisplayId
並支援尋找及管理跨螢幕的物件。 - 新增
UiObject#click
和UiObject2#clickAndWait
方法,現在可以使用座標點選一個點。
修正錯誤
- 修正問題:系統以往偶有螢幕大小計算錯誤的情況,也可能會忽略螢幕的某些部分 (尤其是在多視窗模式下),這些問題現在已經修正 (Ifc016c)。
- 修正
UiDevice#takeScreenshot
中的螢幕截圖資源調度 (Id80ad6)。 - 提升
Until.scrollFinished
和UiObject2#scroll
的穩定性 (I7b0595)。 - 修正嚴格模式
IncorrectContextUseViolation
警告 (Iffa6a0)。