Files
agent_admin/docs/agent/actions/click.md
T

2.1 KiB
Raw Blame History

CLICK

返回动作目录 · 任务协议 · 统一选择器 · 执行与结果

1. 当前行为 [部分实现]

{
  "id": "click-continue",
  "action": "CLICK",
  "packageName": "com.example.target",
  "selector": {
    "resourceId": "com.example.target:id/continue_button"
  },
  "timeoutMs": 5000
}

当前实现:

  • 等待 selector 匹配唯一节点。
  • 节点自身不可点击时,向上查找最近的可点击祖先。
  • 调用 ACTION_CLICK。
  • 不检查可见、启用和有效边界。
  • 不验证点击后的页面。
  • 驱动返回 false 时会再次查询并重复点击,这是需要修正的现有问题。

2. 简单扩展 [提案]

{
  "id": "click-submit",
  "action": "CLICK",
  "packageName": "com.example.target",
  "selector": {
    "text": {
      "mode": "CONTAINS_ANY",
      "values": ["提交", "确认"]
    },
    "state": {
      "visible": true,
      "enabled": true
    }
  },
  "click": {
    "type": "SINGLE",
    "method": "AUTO"
  },
  "after": {
    "state": "VISIBLE",
    "selector": {
      "text": "操作完成"
    }
  },
  "timeoutMs": 5000
}

首批只需要:

  • type:SINGLE、LONG。
  • method:ACCESSIBILITY、CENTER_GESTURE、AUTO。
  • 默认目标必须唯一。
  • AUTO 先使用节点动作;只有目标已唯一确认且边界有效时,才使用中心手势兜底。

位置排序、重叠候选归并等复杂策略按实际页面需要再增加。

3. 执行规则

  1. 等待包名、可选 Activity 和唯一可交互目标。
  2. 解析最近的可点击祖先。
  3. 最多分发一次点击。
  4. 丢弃旧节点。
  5. 提供 after 时读取新页面并验证;未提供时只表示点击请求成功。

4. 结果码

  • CLICKED:点击已分发,未声明 after。
  • OK:点击已分发且 after 满足。
  • TARGET_NOT_FOUND
  • TARGET_AMBIGUOUS
  • TARGET_NOT_INTERACTABLE
  • ACTION_FAILED
  • VERIFICATION_FAILED

5. 测试

覆盖节点点击、可点击祖先、多个目标、不可见/禁用、手势兜底、单次分发和 after 成功/超时。