详情页不再滑动,改为遍历点击所有含"展开"文本的节点 #323

Open
opened 2026-09-18 18:12:39 +08:00 by ila · 0 comments
Owner

原始需求

用户 2026-09-18:「进订单详情页后不要滑动。遍历所有node,点击包含"展开"文本的node」。

事实(代码现状)

readDetail()(原内联在 scan() 里)在找不到「展开」节点、字段又没凑齐时会调用 driver.scroll() 兜底;expansions() 用精确匹配 label == "展开"。

方案

  • expansions() 改用 label.contains("展开"),不假设按钮文案恰好是这两个字。
  • readDetail() 删除滑动兜底:找不到新的「展开」节点(expansions().firstOrNull{...} ?: break)就直接停止读取,不再调用 driver.scroll()。
  • 判据与安全边界不变:仍由 safe() 拦截与禁词节点的几何重叠;仍按 path 去重避免重复点同一个节点。

验收

  • 新增用例:展开按钮文案是「展开全部」而非精确的「展开」,断言扫描期间零滑动、展开点击 1 次、正确读到下单时间。
  • 改回精确匹配后该用例必须红。
  • 既有全部用例不受影响(所有测试驱动的 scroll() 本就返回 false,删除调用是行为保留的重构)。

风险与回退

所有既有测试驱动从未依赖 scroll() 真的滑动成功,删除该调用对已验证行为无影响。回退即恢复 driver.scroll() 分支与精确匹配。

文档影响

无长期文档影响:未改入口、配置、接口和状态机,属于回填详情读取策略的调整。

## 原始需求 用户 2026-09-18:「进订单详情页后不要滑动。遍历所有node,点击包含"展开"文本的node」。 ## 事实(代码现状) `readDetail()`(原内联在 scan() 里)在找不到「展开」节点、字段又没凑齐时会调用 `driver.scroll()` 兜底;`expansions()` 用精确匹配 `label == "展开"`。 ## 方案 - `expansions()` 改用 `label.contains("展开")`,不假设按钮文案恰好是这两个字。 - `readDetail()` 删除滑动兜底:找不到新的「展开」节点(`expansions().firstOrNull{...} ?: break`)就直接停止读取,不再调用 `driver.scroll()`。 - 判据与安全边界不变:仍由 `safe()` 拦截与禁词节点的几何重叠;仍按 path 去重避免重复点同一个节点。 ## 验收 - 新增用例:展开按钮文案是「展开全部」而非精确的「展开」,断言扫描期间零滑动、展开点击 1 次、正确读到下单时间。 - 改回精确匹配后该用例必须红。 - 既有全部用例不受影响(所有测试驱动的 `scroll()` 本就返回 false,删除调用是行为保留的重构)。 ## 风险与回退 所有既有测试驱动从未依赖 `scroll()` 真的滑动成功,删除该调用对已验证行为无影响。回退即恢复 `driver.scroll()` 分支与精确匹配。 ## 文档影响 无长期文档影响:未改入口、配置、接口和状态机,属于回填详情读取策略的调整。
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: OPC/goauto#323