1.8 KiB
1.8 KiB
BACK
1. 当前行为 [已实现]
{
"id": "go-back",
"action": "BACK",
"packageName": "com.example.target",
"timeoutMs": 3000
}
当前 BACK:
- 不需要 selector。
- 等待前台包和可选 Activity 匹配。
- 调用
GLOBAL_ACTION_BACK。 - 不验证返回后的页面。
- 调用返回
false时会在超时内重复调用,这是需要修正的现有问题。
2. 简单扩展 [提案]
BACK 保持“单次系统返回”,只增加可选前后条件:
{
"id": "return-to-list",
"action": "BACK",
"packageName": "com.example.target",
"before": {
"state": "VISIBLE",
"selector": {
"text": "详情页面"
}
},
"after": {
"state": "VISIBLE",
"selector": {
"text": "列表页面"
}
},
"timeoutMs": 5000
}
关闭页面内按钮使用 CLICK;HOME、RECENTS 等其他系统导航不并入 BACK。关闭输入法如果需要,可以在以后增加明确参数,不在当前动作中猜测意图。
3. 执行规则
- 在总超时内满足包名、Activity 和 before。
- 最多调用一次
GLOBAL_ACTION_BACK。 - 调用返回 false 时立即失败。
- 丢弃旧页面节点。
- 提供 after 时等待新页面满足条件。
after 超时不会自动再次返回。连续返回需要编写多个 BACK 步骤,每一步都可以声明自己的页面条件。
4. 结果码
BACK_SENT:系统接受返回请求,未声明 after。OK:返回后 after 满足。PRECONDITION_FAILEDACTION_FAILEDVERIFICATION_FAILED
5. 测试
覆盖前置页面不符、调用成功、调用失败、单次分发、after 成功/超时和多个显式 BACK 步骤。