# 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. 测试 覆盖已选中、当前页找到、滚动后找到、没有目标、多个目标、不可用选项、点击失败、验证失败和边缘停止。