可靠的安卓自动化不会一直点击到“碰巧成功”。它会先确认当前页面,为等待和重试设置上限,检查操作结果,并在证据不足时停止或交给人工复核。

简短答案:下一步没有依据时就停止
安卓自动化停止条件是一条明确规则:当当前页面、执行结果或等待时间已经不足以支持下一步操作时,流程不得继续猜测。它可以安全结束、返回受控结果、保存证据,或者把任务交给人处理。重点不是遇到任何变化都停止,而是不把“不确定”误当成“再点一次”。
- 继续:已确认当前页面,而且下一步操作符合预期。
- 重试:失败可能是暂时的,而且有明确的次数和时间上限。
- 停止或人工复核:页面未知、操作有明显后果,或事后条件没有出现。
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 安卓自动化,逐步缩小状态条件,再决定哪些步骤适合无人值守。
部署前检查清单
- 每个操作都有明确的前置条件和事后条件。
- 每次等待都有超时,每次重试都有最大次数。
- 未知页面会停止或交给人,不会让流程自行猜测。
- 具有明显后果的操作不会在结果不确定时重复执行。
- 正确、错误、缓慢、中断和意外页面都已经测试。
可靠的安卓自动化不是运行时间最长的流程,而是能说明每个操作为何被允许、预期结果是什么,以及证据变化后为什么停止。
安卓自动化停止条件常见问题
固定延时可以代替条件等待吗?
不能。固定延时可以降低频率,但无法证明页面已经进入正确状态。应等待可观察的就绪条件,同时保留总超时。
为什么自动化不能无限重试?
因为每次重试都会消耗时间,也可能重复产生副作用。只有当失败是暂时的、操作可以安全重复,而且次数有上限时,重试才合理。
什么情况必须人工复核?
页面身份不确定、账号或权限异常,或者下一步会删除、购买、发送、公开发布时,人工复核通常比继续猜测更安全。