Files
cmautobuy/docs/task/189-等待多地址列表稳定加载.md
T
2026-08-12 17:08:42 +08:00

3.2 KiB

189 等待多地址列表稳定后再修改默认地址

背景与目标

采购进入多地址页面时,“收货地址”标题先进入控件树,地址列表和“已设默认”标记稍后才出现。旧状态机看到标题后立即解析,首次得到零个修改候选便报歧义,导致 cg11 在尚未点击地址、尚未下单时失败。本任务等待列表和唯一默认地址目标稳定后再点击。

最终方案

  • 地址目标解析同时返回地址卡片数、默认卡片数、整页修改数和最终候选数。
  • 地址页面候选为零、多个或结构暂未完成时继续读取,不点击也不立即失败。
  • 同一个唯一默认地址“修改”坐标必须连续出现两次才允许点击;坐标变化会清空稳定计数。
  • 首次修改点击丢失后的第二次点击仍遵守 #179 的同一目标稳定规则,最多点击两次。
  • 页面总超时后,仍在地址面板且目标不唯一时返回 PURCHASE_ADDRESS_EDIT_AMBIGUOUS;页面切换异常则保持 PURCHASE_ADDRESS_PAGE_TIMEOUT。
  • 超时诊断包含地址卡片数、默认卡片数、修改候选数、稳定读取次数、点击次数和脱敏控件树。
  • #187 的“只修改唯一已设默认地址”、#180 的保存单击和系统浮层限制均保持不变。

改了哪些

  • client/src/pdd_u2_purchase_adapter.py:增加地址目标结构诊断,并将非唯一候选从立即失败改为有界等待。
  • client/test/test_pdd_u2_purchase_adapter.py:覆盖标题先出现、列表延迟出现,持续缺失、持续歧义、卡片内多目标和坐标持续变化。

验收结果

验收标准 结果
标题先出现、列表稍后出现时不立即失败 通过
唯一默认地址修改目标连续稳定后才点击 通过
候选为零、多个或坐标变化时不点击 通过
持续无法唯一定位时有界超时并安全失败 通过
超时包含结构诊断和脱敏 XML 通过
多地址、保存、下单及不可逆门禁行为不变 通过
Client 全量测试通过 未完全通过:461 项通过,2 项无关版本基线断言失败

测试

  • 执行的命令:在 client 目录执行 C:/Python310/python.exe -m unittest discover -s test -p 'test_pdd_u2_purchase_adapter.py'
  • 结果:45 个采购 Adapter 测试全部通过。
  • 执行的命令:在 client 目录执行 $env:QT_QPA_PLATFORM='offscreen'; C:/Python310/python.exe -m unittest discover -s test -p 'test_*.py'
  • 结果:共 463 项,其中 461 项通过;2 项失败。失败是工作区 src/version.py 已为 0.1.1,而两个既有更新测试仍固定期待 0.1.0,与本工单采购代码无关。
  • 额外验证:排除上述两个既有版本断言后,其余 461 项全部通过。
  • 没验证到的部分:未修复或提交用户工作区的版本号及更新测试;未在真机重新执行 cg11;未点击地址、保存、提交订单或进入任何不可逆操作。

相关提交

  • 41d1b13 fix: 等待多地址列表稳定加载 (#189)