重试与失败处理
活屏幕上的自动化失败得频繁而正常:动画还在放、网络调用慢、对话框晚到。把每次波动都当崩溃的流程没法用;把一切永远重试的流程更糟。
本页讲处理失败的三件工具,以及——更重要的——每件工具何时是错误选择。
目的
读完本页,你看着一个失败的步骤就能说出它需要哪个:
- 更长的超时——那东西会来,只是晚点。
- 失败连线——屏幕处在另一种状态,走另一条路。
- 重试策略——操作确实失败了,重复可能成功。
选错就是流程变慢、变飘、或两者兼备的原因。
重试是节点属性,不是节点
没有"Retry"节点。重试是附在节点上的策略,在 Properties 面板配置。
{
"maxAttempts": 3,
"retryOn": ["failure", "timeout"],
"backoffMs": 500,
"backoffMultiplier": 1.5,
"captureScreenshotPerAttempt": true
}
每项设置
| 设置 | 类型 | 范围 | 默认 | 含义 |
|---|---|---|---|---|
maxAttempts | integer | 1–20 | — | 含首次的总尝试数 |
retryOn | list | failure、timeout | — | 哪些结果可重试 |
backoffMs | integer | 0–60000 | — | 下次尝试前的等待 |
backoffMultiplier | number | 1–10 | — | 每次把等待乘以此数 |
captureScreenshotPerAttempt | boolean | — | false | 每次尝试存一张截图 |
maxAttempts: 3 是总共三次尝试,不是一加三。
backoffMs: 500、backoffMultiplier: 1.5 时,等待依次为 500 ms、750 ms、1125 ms。
永不重试的东西
retryOn 只能含 failure 与 timeout。schema 拒绝其余,理由充分:
fatal永不重试。 它意味着配置或系统错误——坏表达式、非法区域、设备断连。重复产生一模一样的错误。success永不重试,包括报告"未找到"的检测(其状态为success)。cancelled永不重试。 用户停止了运行。
最常见的重试错误
给 Find Image 加重试策略想"找得更狠"毫无作用。
未找到模板的 Find Image 返回状态 success、路由 failure。重试只在状态 failure 或 timeout 时触发。策略永不点火。
想找得更狠,提高 timeoutMs——节点本来就在每个轮询间隔重新截图重新匹配。那就是检测的重试环。
一次尝试的生命周期
图中导出的两条规则:
- 参数错误发生在重试之前。 坏的
{{变量}}是fatal,永不重试。 - 输出映射恰好运行一次,作用于最终尝试的结果。重试三次的节点写一次变量。