Selector Forge:AI 驱动的浏览器扩展,用于生成稳健的 CSS 和 XPath 选择器

Selector Forge:AI 驱动的浏览器扩展,用于生成稳健的 CSS 和 XPath 选择器

Selector Forge 是一款浏览器扩展,旨在通过 AI 提供候选选择器并利用实时浏览器 DOM 进行验证,从而消除网页选择器的脆弱性。它为开发者提供可靠的 CSS 和 XPath 选择器,适用于端到端测试、网页爬虫和页面自动化,确保生成的选择器在交付给用户之前能够正确解析。

经验证的 AI 驱动选择器生成

Selector Forge 通过将浏览器视为绝对的真相来源来确保选择器的可靠性。虽然 AI 会提出并排序潜在的选择器,但它并不是最终的判定者;每个候选项都会在实时 DOM 中重新验证。

验证循环

  1. 元素选择:用户在实时页面上挑选一个或多个元素。
  2. 上下文捕获:扩展捕获包括所选目标、DOM 上下文和种子候选项的快照。
  3. AI 提案:Intuned 后端提出并排序候选选择器。
  4. 实时测试:扩展对每个候选项在实时 DOM 中进行测试,并将结果反馈给后端。
  5. 迭代:该循环重复进行,直至确定经过验证的最佳方案。
  6. 交付:仅将重新验证的选择器呈现给用户,以便复制。

信任边界

为保持高可靠性,工具实现了严格的信任边界:

  • 会话状态:扩展管理选择器创建的会话状态。
  • 强制验证:每个结果都必须在浏览器 DOM 中重新验证。
  • 列表验证:对于基于列表的选择,系统会检查完整的预期集合,以拒绝匹配过多或匹配不足的选择器。

选择模式

Selector Forge 提供两种主要模式,以处理不同类型的网页元素:

模式 用户操作 结果
单选 选取一个元素 为按钮、输入框、链接或标签等特定目标提供经过验证的选择器。
列表 从重复集合中选取两个示例 为整个集合提供经过验证的容器选择器,并在保存前提供预览。

技术架构与开发

Selector Forge 使用 WXT 和 React 构建,是兼容 Chrome 与 Firefox 的 Manifest V3(MV3)扩展。

项目结构

  • entrypoints/:包含后台服务工作线程(会话状态和网络 I/O)、内容脚本(选择器覆盖层和 DOM 访问)以及基于 React 的弹出窗口。
  • lib/:存放代理循环控制器、消息协议、会话状态管理以及 GraphQL 查询。
  • tests/:实现多层次测试策略,包括单元测试(Vitest)、用于 DOM 正确性的浏览器模式测试以及端到端测试(Playwright)。

开发者工具

开发者可以使用 yarn dev 进行监听模式构建,使用 yarn ladle 在 Ladle 中单独预览弹出组件,Ladle 会为 WXT 的 browser 全局提供一个空操作存根。

未来路线图

该项目旨在从独立扩展扩展为更集成的自动化工具:

  • CLI 与 IDE 集成:通过 Intuned CLI 驱动扩展,以支持本地代理和 MCP(模型上下文协议)暴露。
  • 智能选择器:提供 multiple 模式用于分组元素,并通过 AI 驱动的字段检测自动建议页面名称和选择器。
  • 精度细化:提供下钻模式,沿 XPath/DOM 树进行更精确的定位(例如,从子 span 移动到父容器)。
  • 可自托管后端:计划提供参考后端和开源代理,允许用户在自己的基础设施上运行完整的选择器生成循环。
  • 扩展支持:未来更新将包括导出为 Playwright/JavaScript 的选项、自动分页检测以及对 shadow-DOM 和跨 iframe 元素的支持。

Sources