2.2 KiB
2.2 KiB
INPUT
1. 当前行为 [部分实现]
{
"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. 简单扩展 [提案]
{
"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. 执行规则
- 等待唯一、可见、启用且可编辑的目标。
- 需要时请求焦点。
- 计算最终输入文本。
- 最多调用一次输入动作。
- 按 verify 回读;提供 after 时继续验证页面条件。
timeoutMs 包含等待、焦点、输入和验证。
4. 结果码
INPUT_SENT:输入已分发但未回读验证。OK:输入验证通过。INPUT_VALUE_INVALIDTARGET_NOT_FOUNDTARGET_AMBIGUOUSTARGET_NOT_EDITABLEACTION_FAILEDVERIFICATION_FAILED
5. 测试
覆盖 REPLACE、CLEAR、APPEND、目标不可编辑、输入失败、回读不一致、密码节点和单次分发。WebView、自定义输入框与常用输入法需要真机验证。