59 lines
1.7 KiB
Markdown
59 lines
1.7 KiB
Markdown
# SELECT_OPTION **[提案]**
|
|
|
|
> [返回动作目录](README.md) · [统一选择器](../selector.md) · [SCROLL](scroll.md) · [CLICK](click.md)
|
|
|
|
SELECT_OPTION 是“查找选项、必要时滚动、点击并验证选中”的复合动作。当前代码尚未实现。
|
|
|
|
## 1. 任务结构
|
|
|
|
~~~json
|
|
{
|
|
"id": "select-value",
|
|
"action": "SELECT_OPTION",
|
|
"packageName": "com.example.target",
|
|
"target": {
|
|
"text": {
|
|
"mode": "EXACT",
|
|
"value": "选项 A"
|
|
}
|
|
},
|
|
"container": {
|
|
"resourceId": "com.example.target:id/options"
|
|
},
|
|
"search": {
|
|
"direction": "DOWN",
|
|
"maxAttempts": 6
|
|
},
|
|
"selectedWhen": {
|
|
"state": "SELECTED",
|
|
"selector": {
|
|
"text": "选项 A"
|
|
}
|
|
},
|
|
"timeoutMs": 10000
|
|
}
|
|
~~~
|
|
|
|
`target` 可以直接使用 selector,也可以在值引用实现后使用任务输入生成文字条件。
|
|
|
|
## 2. 执行规则
|
|
|
|
1. 先检查 selectedWhen;已经选中时直接成功。
|
|
2. 在当前容器中查找唯一目标。
|
|
3. 未找到且配置 search 时,按 SCROLL 规则有限滚动。
|
|
4. 找到后按 CLICK 规则最多点击一次。
|
|
5. 重新读取页面并验证 selectedWhen。
|
|
6. 达到最大次数、边缘或总超时时停止。
|
|
|
|
没有可观察的选中状态时,不应使用 SELECT_OPTION;改用 CLICK,并由页面 after 验证。
|
|
|
|
## 3. 结果码
|
|
|
|
见[结果码总表](README.md#结果码总表)。SELECT_OPTION 使用 `OK`、`TARGET_NOT_FOUND`、`TARGET_AMBIGUOUS`、`ACTION_FAILED` 和 `VERIFICATION_FAILED`。
|
|
|
|
“已经处于选中状态”属于成功的细节,放在 `detail` 而不是 `code`。
|
|
|
|
## 4. 测试
|
|
|
|
覆盖已选中、当前页找到、滚动后找到、没有目标、多个目标、不可用选项、点击失败、验证失败和边缘停止。
|