Skip to content

fix(extension): match form state by element identity - #188

Merged
iuyo5678 merged 1 commit into
mainfrom
fix/match-form-state-by-element
Sep 7, 2026
Merged

fix(extension): match form state by element identity#188
iuyo5678 merged 1 commit into
mainfrom
fix/match-form-state-by-element

Conversation

@iuyo5678

@iuyo5678 iuyo5678 commented Sep 7, 2026

Copy link
Copy Markdown
Collaborator

问题表现

原实现按控件和 iframe 的遍历顺序,将运行时表单状态写回 DOM 快照。存在 Shadow DOM、控件动态增删或重排、iframe 采集范围不一致时,两次采集的顺序可能不同,导致值、占位符和填写状态被关联到错误控件,影响后续自动化判断。

修复方案

  • 批量采集时返回控件的 backendNodeId,按元素身份匹配并补充状态。
  • 无法匹配或返回数据异常时,保留原始快照数据。
  • 保留单次批量读取、250 个控件上限和密码脱敏规则;采集结束、失败或取消后释放临时远程对象。
  • 改动限定在表单状态采集逻辑及相关测试,共 3 个文件。

##验证措施

  • 新增 12 个回归用例,覆盖顺序变化、缺失控件、iframe 与独立目标隔离、异常回退、脱敏、取消清理和采集上限。
  • 扩展完整测试通过:77 个测试文件、864 个用例。
  • 真实 Chrome 验证通过:Shadow DOM 混合表单、采集期间增删重排、包含不可访问 iframe 的页面、251 个控件的大表单。
  • TypeScript、Biome、差异检查和生产构建通过。

@iuyo5678
iuyo5678 merged commit 6d18110 into main Sep 7, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants