2.1 KiB
2.1 KiB
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. 执行规则
- 等待包名、可选 Activity 和唯一可交互目标。
- 解析最近的可点击祖先。
- 最多分发一次点击。
- 丢弃旧节点。
- 提供 after 时读取新页面并验证;未提供时只表示点击请求成功。
4. 结果码
CLICKED:点击已分发,未声明 after。OK:点击已分发且 after 满足。TARGET_NOT_FOUNDTARGET_AMBIGUOUSTARGET_NOT_INTERACTABLEACTION_FAILEDVERIFICATION_FAILED
5. 测试
覆盖节点点击、可点击祖先、多个目标、不可见/禁用、手势兜底、单次分发和 after 成功/超时。