Files

85 lines
2.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# INPUT
> [返回动作目录](README.md) · [任务协议](../protocol.md) · [统一选择器](../selector.md) · [值与输出](../values-and-outputs.md)
## 1. 当前行为 **[部分实现]**
~~~json
{
"id": "input-keyword",
"action": "INPUT",
"packageName": "com.example.target",
"selector": {
"resourceId": "com.example.target:id/input"
},
"value": "测试内容",
"timeoutMs": 5000
}
~~~
当前实现对唯一节点调用 `ACTION_SET_TEXT`:
- value 只能是字符串。
- 不主动请求焦点。
- 不检查节点是否可编辑。
- 不回读验证输入结果。
- 驱动返回 `false` 时会重复输入,这是需要修正的现有问题。
## 2. 简单扩展 **[提案]**
~~~json
{
"id": "input-keyword",
"action": "INPUT",
"packageName": "com.example.target",
"selector": {
"resourceId": "com.example.target:id/input",
"state": {
"visible": true,
"enabled": true
}
},
"value": {
"source": "TASK_INPUT",
"key": "keyword"
},
"mode": "REPLACE",
"verify": "EXACT",
"timeoutMs": 5000
}
~~~
首批模式:
- `REPLACE`:替换全部文本。
- `CLEAR`:清空。
- `APPEND`:在现有文本后追加。
验证:
- `NONE`:只检查系统是否接受输入请求。
- `EXACT`:回读文本与目标值相同。
- `NON_EMPTY`:只检查结果非空。
密码节点不回读原文,可使用 NONE 或 NON_EMPTY。复杂格式化、剪贴板和模板输入等到实际需要时再增加。
## 3. 执行规则
1. 等待唯一、可见、启用且可编辑的目标。
2. 需要时请求焦点。
3. 计算最终输入文本。
4. 最多调用一次输入动作。
5. 按 verify 回读;提供 after 时继续验证页面条件。
`timeoutMs` 包含等待、焦点、输入和验证。
## 4. 结果码
见[结果码总表](README.md#结果码总表)。INPUT 使用 `OK`、`TARGET_NOT_FOUND`、`TARGET_AMBIGUOUS`、`TARGET_NOT_INTERACTABLE`(含不可编辑)、`ACTION_FAILED` 和 `VERIFICATION_FAILED`。
`verify` 为 `NONE` 时,成功只表示系统接受了输入请求,不表示文本已正确写入。
## 5. 测试
覆盖 REPLACE、CLEAR、APPEND、目标不可编辑、输入失败、回读不一致、密码节点和单次分发。WebView、自定义输入框与常用输入法需要真机验证。