可靠的安卓自動化不會一直點擊到「碰巧成功」。它會先確認目前頁面,為等待和重試設定上限,檢查操作結果,並在證據不足時停止或交由人工複核。

簡短答案:下一步沒有依據時就停止
安卓自動化停止條件是一條明確規則:當目前頁面、執行結果或等待時間已經不足以支持下一步操作時,流程不得繼續猜測。它可以安全結束、回傳受控結果、保存證據,或把任務交給人處理。重點不是遇到任何變化都停止,而是不把「不確定」誤當成「再點一次」。
- 繼續:已確認目前頁面,而且下一步操作符合預期。
- 重試:失敗可能是暫時的,而且有明確的次數和時間上限。
- 停止或人工複核:頁面未知、操作有明顯後果,或事後條件沒有出現。
Android UI Automator 提供條件等待與穩定性檢查,WorkManager 也明確區分取消和停止後的處理。共同原則是:等待、重試和停止都要有邊界。
繼續、等待、重試、停止還是人工複核?
| 決策 | 適用情況 | 必須設定的邊界 | 應保存的證據 |
|---|---|---|---|
| 繼續 | 目前狀態與下一步操作都已確認 | 一次經過審核的狀態轉換 | 目前狀態與事後條件 |
| 等待 | App 正在載入或頁面尚未穩定 | 逾時或明確的就緒條件 | 等待時間與最後頁面 |
| 重試 | 暫時性問題可能自行恢復 | 最大次數與重試間隔 | 每次觀察結果 |
| 停止 | 頁面未知、條件不符或風險過高 | 立即結束 | 停止原因與截圖 |
| 人工複核 | 流程無法安全判斷或操作有明顯後果 | 負責人和處理時限 | 完整交接資料 |
這五種決策不能互相替代。等待是給同一狀態時間完成;重試是有限地再觀察或恢復;停止是結束目前路徑;人工複核則用於自動化證據不足、無法安全選擇的情況。
第一步:先為每個重要頁面命名
從一條短流程開始,例如開啟測試版本、進入設定頁面、更改一個不敏感的選項,再確認新狀態。寫出起始狀態、預期狀態和允許出現的備用狀態,不要從一長串座標開始。
- 為每個狀態選擇一個最關鍵的可觀察事實,例如 UI 屬性、可見文字、已知圖像或偵測目標。
- 標出絕不能自動操作的頁面,例如意外帳號、權限、購買、刪除或正式資料頁面。
- 讓另一位同事只看狀態定義,也能解釋為什麼允許執行下一步。
安卓圖像辨識自動點擊指南說明了為什麼「找到目標」還不夠:點擊前要確認頁面,點擊後還要驗證結果。
第二步:選擇能證明狀態的觀察方式
UI 結構適合確認標籤、選取狀態、控制項是否可用和項目數量。OCR 適合讀取 UI 樹無法穩定提供的可見文字。模板匹配適合外觀已知的目標;目標偵測適合位置或大小會變化、但類別已經驗證過的物件。
不要把幾個弱訊號疊在一起就稱為確定。應先定義一個承擔主要判斷的觀察結果,再把其他訊號保存為輔助證據。安卓視覺測試方法比較進一步說明了 UI 狀態、OCR、截圖、模板和偵測各自適合解決什麼問題。
第三步:為等待和重試設定預算
任何迴圈都不能無限執行。每次等待都需要逾時或明確的就緒條件;每次重試都需要最大次數、合理間隔,以及「為什麼再試一次可能成功」的說明。
| 失敗情況 | 可以再試的原因 | 安全邊界 | 何時停止 |
|---|---|---|---|
| 頁面仍在載入 | 同一頁面可能很快穩定 | 等待穩定或逾時 | 就緒條件始終沒有出現 |
| 元素暫時缺失 | 內容可能稍後到達 | 固定次數重新觀察 | 預期元素始終不存在 |
| 點擊後沒有切換 | 一次輸入可能漏掉 | 重新檢查頁面後最多補試一次 | 事後條件仍然缺失 |
| 出現未知彈窗或帳號 | 再次嘗試不會降低不確定性 | 不允許自動重試 | 立即停止並交由人工複核 |
第四步:操作成功不等於任務完成
工具成功送出點擊,只能證明輸入已經嘗試,不能證明 App 接受了操作。可靠流程要驗證事後條件,例如新頁面標題出現、開關值改變、項目數量更新,或明確的成功狀態出現。
- 檢查與業務結果直接相關的變化,不要只檢查動畫或點擊回饋。
- 如果操作可能刪除、購買、傳送或公開發布,不要在結果不確定時自動重複。
- 事後條件失敗時,保存證據並進入明確的失敗路徑。
第五步:失敗時留下可交接的證據
- 流程和步驟名稱、App 版本、裝置、系統版本、語言和螢幕方向。
- 預期狀態、實際觀察結果、嘗試次數和經過時間。
- 失敗時的局部截圖,以及相關 OCR、匹配分數、UI 屬性或偵測結果。
- 最後一個成功狀態、剛執行的動作、缺少的事後條件和停止原因。
好的交接資料應讓接手者不必先重跑整條流程,就能決定下一步。安卓自動化 QA 冒煙測試指南提供了更完整的真機檢查範例。
萊彩 Flow 如何表達這些安全邊界
萊彩 Flow 是萊彩投屏中的自動化功能。它可以把 UI 或視覺觀察、條件分支、等待、有限次數迴圈、子流程和明確結束放進同一個可檢查的工作流程。重點不是堆很多節點,而是讓每個「為什麼可以繼續」都看得見。
部署後,萊彩 Flow Inside 可以透過手機上的萊彩 Android Agent 執行相容的 Profile。相容性仍取決於 Profile 使用的節點、資源、模型和網路依賴;在手機端執行並不會消除重試上限、證據和人工複核的需要。
如果還在設計第一條流程,可以先在有人觀察的情況下使用萊彩投屏的 AI 安卓自動化,逐步縮小狀態條件,再決定哪些步驟適合無人值守。
部署前檢查清單
- 每個操作都有明確的前置條件和事後條件。
- 每次等待都有逾時,每次重試都有最大次數。
- 未知頁面會停止或交給人,不會讓流程自行猜測。
- 具有明顯後果的操作不會在結果不確定時重複執行。
- 正確、錯誤、緩慢、中斷和意外頁面都已經測試。
可靠的安卓自動化不是執行時間最長的流程,而是能說明每個操作為何被允許、預期結果是什麼,以及證據變化後為什麼停止。
安卓自動化停止條件常見問題
固定延時可以代替條件等待嗎?
不能。固定延時可以降低頻率,但無法證明頁面已經進入正確狀態。應等待可觀察的就緒條件,同時保留總逾時。
為什麼自動化不能無限重試?
因為每次重試都會消耗時間,也可能重複產生副作用。只有當失敗是暫時的、操作可以安全重複,而且次數有上限時,重試才合理。
什麼情況必須人工複核?
頁面身分不確定、帳號或權限異常,或下一步會刪除、購買、傳送、公開發布時,人工複核通常比繼續猜測更安全。