# 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、自定义输入框与常用输入法需要真机验证。