用途
browser-form-fill 用于自动填写网页表单。它接收一个结构化的字段映射(例如 {"first_name": "Ada", "company": "..."}),将字段名映射到对应的值,然后完成表单填写。当浏览器模板库(browser-templates)中存在该主机的条目时,技能会使用模板自动把字段名解析为 CSS 选择器;否则通过页面的无障碍快照(accessibility snapshot)来解析。
主要能力
- 基于字段映射填写表单。
- 模板路径(--template <name>):从 browser-templates 中拉取 {字段名 → 选择器} 的映射。
- 快照路径:调用 browser_snapshot,遍历无障碍树,将每个输入框的可访问名称/标签与字段映射的键进行匹配。
- 按输入类型分别使用 browser_fill / browser_type / browser_select / browser_check 进行填写。
- 可选提交(--submit):通过快照定位提交按钮,使用 browser_click 点击,再用 browser_wait 等待导航。
- 若发现新的映射,可持久化模板。
- 若字段映射的 _assert 键中提供了验证片段,可验证提交后的状态。
使用方式
- 通过 browser-record 打开一个已录制的会话。
- 解析选择器:
- 模板路径(--template <name>):从 browser-templates 中拉取 {字段名 → 选择器}。
- 快照路径:调用 browser_snapshot,遍历无障碍树,将每个输入框的可访问名称/标签与字段映射的键进行匹配。
- AIDefence PII 门禁:字段映射中的每个值在输入任何按键之前都要通过 aidefence_has_pii 检测;在会话清单中记录 pii_in_form: true。不要在轨迹中记录这些值本身,只记录字段名和脱敏占位符。
- 按输入类型分别使用 browser_fill / browser_type / browser_select / browser_check 进行填写。
- 若指定 --submit:通过快照定位提交按钮,使用 browser_click 点击,再用 browser_wait 等待导航。
- 若发现了新的映射,持久化模板:
npx -y @claude-flow/cli@latest memory store --namespace browser-templates \
--key "<host>:<form-name>" \
--value "{field_map:{...}, submit_selector:..., post_submit_url_pattern:...}"
- 若字段映射的 _assert 键中提供了验证片段,验证提交后的状态。
适用场景
- 提交字段名稳定的已知表单(注册、联系、结账)。
- 复用已存储的模板进行重复提交。
- 通过记录解析出的选择器,为某个站点编写新模板。
限制与注意事项
- 填写相关的轨迹步骤必须对值进行脱敏。PII 门禁是硬性约定。
- 对于需要模拟输入的场景(例如自动补全反应),应使用 browser_type(模拟按键)而非 browser_fill(以编程方式设置值)。在轨迹步骤中记录使用了哪一种。
- 多步表单是一系列 browser-form-fill 调用;通过同一个会话 id 串联它们。
- 如果表单有 CAPTCHA,应将请求呈现给用户——不要尝试绕过。