3.6 KiB
3.6 KiB
通用动作目录
动作状态
| 动作 | 当前状态 | 文档 |
|---|---|---|
WAIT |
[已实现],条件扩展为 [提案] | wait.md |
CLICK |
[部分实现] | click.md |
INPUT |
[部分实现] | input.md |
BACK |
[已实现],单次分发和验证为 [提案] | back.md |
EXTRACT_TEXT |
[已实现] | extract.md |
EXTRACT |
[提案] | extract.md |
OPEN |
[提案] | open.md |
SCROLL |
[提案] | scroll.md |
SELECT_OPTION |
[提案] | select-option.md |
SCREENSHOT |
[提案] | screenshot.md |
BRANCH |
[提案] | 流程控制 |
当前代码中的动作只有 WAIT、CLICK、INPUT、BACK 和 EXTRACT_TEXT。
结果码总表
结果码在这里统一定义,动作文档只引用不重复定义。事实来源是 ResultCode。
是否成功只看 successful;成功时 code 恒为 OK。 不使用 CLICKED、INPUT_SENT、OPEN_SENT、ALREADY_SELECTED 这类“成功但不是 OK”的码——否则调用方无法用 code 判断成败。需要区分成功的细节时,用独立的 detail 字段,不占用 code。
| code | 状态 | 含义 |
|---|---|---|
OK |
[已实现] | 步骤或任务成功 |
PACKAGE_MISMATCH |
[已实现] | 超时内前台包始终与 packageName 不符 |
ACTIVITY_MISMATCH |
[已实现] | 超时内前台 Activity 始终与 activityName 不符 |
TARGET_NOT_FOUND |
[已实现] | 超时内 selector 没有匹配到节点 |
TARGET_AMBIGUOUS |
[已实现] | selector 匹配多个节点,立即失败 |
ACTION_FAILED |
[已实现] | 目标已找到,但动作在超时内始终未成功 |
TARGET_NOT_INTERACTABLE |
[提案] | 目标不可见、禁用或不可编辑 |
VERIFICATION_FAILED |
[提案] | 动作已分发,但 after 或回读验证未通过 |
TASK_INVALID |
[提案] | 任务解析失败 |
UNSUPPORTED_ON_DEVICE |
[提案] | 当前系统版本或服务配置不支持该动作 |
超时不单独设码:超时体现为“超时内没能成功”的那个具体原因(TARGET_NOT_FOUND、ACTION_FAILED 等),不再为每个动作定义 WAIT_TIMEOUT、SCROLL_TIMEOUT 这类同义码。
新增动作时,先在 ResultCode 与本表中登记,再在动作文档引用。
统一规则
每个 UI 动作遵循同一条简单流程:
- 校验动作字段、
packageName和可选activityName。 - 在步骤
timeoutMs内等待上下文和目标控件。 - 默认要求目标唯一;多个目标明确失败。
- 执行动作;有副作用的动作默认只分发一次。
- 如果任务提供
after,重新读取页面并验证结果。 - 返回
success、code、message、output和elapsedMs。
动作文件只描述动作特有参数。选择器、条件、输出和结果结构分别引用共享文档。
实现检查清单
- 模型包含动作和参数。
- 解析器校验必要字段、类型和范围。
- 执行器有总超时,不无限等待。
- 驱动只提供 Android 基础能力,不包含目标 App 业务规则。
- 测试覆盖成功、未找到、多个目标、超时和底层失败。
- 文档状态与
ActionType一致。