技术深度解析
Selector Forge的核心创新在于其使用了一个轻量级的基于Transformer的模型,该模型将DOM子树编码为潜在表示。与依赖启发式规则(例如“优先使用ID而非类”)的传统选择器生成器不同,Selector Forge会学习哪些属性和结构特征在页面版本间最为稳定。该模型在一个包含50万个DOM快照的数据集上训练,这些快照来自排名前1万的网站,每两周拍摄一次以捕捉真实世界的变化。对于每个元素,模型会学习预测一组候选属性,这些属性在更新后保持不变的概率最大。
其架构由三个组件组成:
1. DOM解析器:将实时DOM转换为节点树,每个节点都带有属性、文本内容和位置信息。
2. 选择器编码器:一个小型Transformer(4层,128个隐藏维度),它提取目标元素周围的子树并输出一个固定大小的嵌入向量。该嵌入向量捕捉了元素的“结构指纹”。
3. 属性解码器:一个前馈网络,将嵌入向量映射到一个按排名排列的属性-值对列表(例如,`data-testid="submit-btn"` 或 `aria-label="Search"`)。排名最高的属性-值对被用作主要选择器,并附带备用方案以确保冗余。
训练目标是对比损失:对于每个元素,模型必须区分稳定属性(跨快照持续存在的属性)和不稳定属性。这在计算上非常高效——在消费级GPU上,每个元素的推理时间不到50毫秒,并且模型通过浏览器扩展中的ONNX运行时完全在客户端运行。
一个关键的工程决策是使用相对选择器而非绝对路径。Selector Forge不会生成 `html > body > div:nth-child(3) > span` 这样的选择器,而是生成 `[data-testid="submit"]` 或 `button:has-text("Submit")` 这样的选择器。这使得它们对结构重排具有鲁棒性。该扩展还支持批量选择,用户可以在页面上高亮多个元素(例如,电商列表中的所有产品卡片),AI会生成一个匹配所有这些元素的单一模式,它使用聚类算法来识别这些元素中共同的稳定属性。
GitHub仓库:该项目托管在 `github.com/selector-forge/selector-forge`(截至撰写本文时,已获得2300多颗星,120个分支)。该仓库包含扩展源代码、模型权重(15 MB)、训练脚本以及一个包含5万个带注释DOM快照的数据集。README文档记录了一套基准测试套件,用户可以在自己的网站上运行。
基准测试数据:
| 选择器类型 | 存活率(100次DOM突变) | 平均生成时间 | 选择器长度(字符数) |
|---|---|---|---|
| 手工编写CSS(专家) | 28% | 12秒(手动) | 45 |
| 手工编写XPath(专家) | 22% | 15秒(手动) | 62 |
| Selector Forge(AI) | 85% | 0.04秒 | 38 |
| 启发式工具(例如ChroPath) | 35% | 0.1秒 | 55 |
数据要点:Selector Forge的AI生成选择器在DOM突变中的存活率几乎是手工编写选择器的三倍,同时更短且生成速度快了几个数量级。这表明AI不仅能达到,甚至能超越人类在选择器稳定性方面的直觉。
关键参与者与案例研究
Selector Forge由来自网页抓取和测试社区的一个三人小团队开发。首席开发者此前在一家大型浏览器自动化公司工作,亲身经历了“选择器腐烂”问题——每次前端部署后测试套件都会失败。团队选择开源模式,以鼓励社区贡献并建立信任——这对于一个可能用于生产管道的工具至关重要。
已有几家公司正在集成类似的方法。BrowserStack最近宣布在其云测试平台中推出一项自愈选择器的测试版功能,但细节尚未公开。Playwright,这个流行的浏览器自动化框架,内置了“自动等待”机制,但尚未提供AI驱动的选择器生成。开源社区已经产生了像 `dom-to-css` 和 `xpath-generator` 这样的工具,但它们依赖基于规则的启发式方法,缺乏Selector Forge的学习能力。
选择器生成工具对比:
| 工具 | AI驱动 | 开源 | 批量支持 | 自愈 | 客户端运行 |
|---|---|---|---|---|---|
| Selector Forge | 是 | 是(MIT) | 是 | 是 | 是 |
| ChroPath | 否 | 是(GPL) | 否 | 否 | 是 |
| SelectorGadget | 否 | 是(MIT) | 否 | 否 | 是 |
| BrowserStack Self-Healing | 是 | 否 | 是 | 是 | 否(云端) |
| Playwright locator | 否 | 是(Apache) | 否 | 否 | 是 |
数据要点:Selector Forge是唯一一个完全开源、客户端运行,并集成了AI、批量选择和自愈功能的工具。其MIT许可证使其对商业使用具有吸引力,这与GPL许可证的替代品不同。
一个值得注意的案例研究来自一家