Files
cmautobuy/docs/task/178-兼容非滚动图片颜色采购选择.md
T
2026-08-12 10:49:06 +08:00

3.0 KiB

178 兼容非滚动图片颜色卡片的采购选择

背景与目标

采购非滚动自绘规格面板时,代码使用固定高度估算颜色区域。较高的图片颜色卡片被区域下边界截断,安全校验拒绝点击,随后又执行无意义的横向滑动,最终误报“没有精确选中颜色”。本任务在保留精确匹配和点击后确认的前提下兼容这类卡片。

最终方案

  • 目标没有可滚动祖先但已经出现在当前树时,使用完整可点击卡片、颜色标题、下一规格标题和屏幕边界计算静态颜色区域。
  • 左右部分露出或纵向越过下一规格标题的卡片仍拒绝点击。
  • 静态目标点击后未确认时立即失败,不再盲目横向滑动;明确滚动容器仍使用原左右扫描。
  • 点击后继续要求最新控件树提供 selected/checked 或“已选”摘要,不能以发出点击代替成功。
  • Adapter 区分目标不可见、缺少安全坐标和点击后未确认,并在失败时保存脱敏控件树。

改了哪些

  • client/src/util/select_color_size.py:增加静态图片颜色区域、安全坐标计算、停止条件和失败阶段诊断。
  • client/src/pdd_u2_purchase_adapter.py:输出准确错误并保存脱敏选项失败控件树。
  • client/test/test_select_color_size.py:覆盖高图片卡片成功、未确认、部分露出和越过尺码标题。
  • client/test/test_pdd_u2_purchase_adapter.py:覆盖错误原因和脱敏诊断文件。

验收结果

验收标准 结果
完整显示的非滚动高图片卡片可以生成安全坐标 通过
点击后必须由最新树确认选中 通过
静态目标可见时不执行横向滑动 通过
部分露出或越过下一规格标题仍拒绝点击 通过
失败原因明确且保存脱敏诊断 通过
尺码选择及采购不可逆门禁不变 通过
Client 全量测试通过 通过

测试

  • 执行的命令:在 client 目录执行 C:/Python310/python.exe -m unittest discover -s test -p 'test_select_color_size.py'
  • 结果:4 个颜色选择测试全部通过。
  • 执行的命令:在 client 目录执行 C:/Python310/python.exe -m unittest discover -s test -p 'test_pdd_u2_purchase_adapter.py'
  • 结果:29 个采购 Adapter 测试全部通过。
  • 执行的命令:在 client 目录执行 $env:QT_QPA_PLATFORM='offscreen'; C:/Python310/python.exe -m unittest discover -s test -p 'test_*.py'
  • 结果:447 个 Client 测试全部通过。
  • 额外验证:手机当前控件树只读计算得到藏青色卡片 [36,1188][352,1591],唯一中心点 (194,1389);未点击手机。
  • 没验证到的部分:未在真机重新执行采购;未进行任何真实下单或不可逆操作。

相关提交

  • cd9c552 fix: 兼容非滚动图片颜色采购选择 (#178)