可恶,被大神捷足先登,强烈推荐github优秀项目browser-use

378 阅读4分钟

引言

在自动化测试领域,实现精准的元素定位一直是一个巨大的挑战。为了应对这一挑战,我在对比了6种元素定位技术后,加之AI爆火,我最初计划设计一套基于图像识别和 AI 的自动化元素定位系统。然而,在一次偶然的机会中,我在 GitHub 上发现了一位大神已经实现并开源了这个项目。按时间推算,该项目在我设计前一个月就开源,也就是大神早在很久就开始设计,简直遥遥领先我N年,对大神仰慕之情犹如滔滔江水连绵不绝,膜拜膜拜。感兴趣的可以试用,溜得飞起。项目地址

github.com/browser-use…

推荐指数:★★★★☆

初衷与发现

最初,我被自动化测试中元素定位的难题所困扰。为了提升自动化测试的精准度和效率,我萌生了利用 AI 图像识别技术来设计一套自动化元素定位系统的想法。图像识别技术能够通过分析元素的外观和结构,准确定位网页中的各个元素,从而极大地提升测试的可靠性。

然而,在实施这一想法的过程中,我偶然在 GitHub 上发现了一位大神已经实现了这一愿景,并将项目开源分享给社区。看到如此优秀的作品,我不禁心生敬佩,但这并未打消我的念头,反而激发了我用另一种方法来实现自动化元素定位的决心。

挑战与解决方案

虽然 AI 图像识别是一种先进的技术,但我决定使用 JavaScript 动态 + DOM 树遍历的方法来实现自动化元素定位。这种方法通过遍历 DOM 树,动态获取元素属性和位置,具有灵活性强、实时性高等优点。

AI + 图像识别实现的方式有如下优点:

  1. 通过页面视觉特征定位元素,不依赖 DOM 结构,适用于动态渲染、Shadow DOM 和 canvas 渲染的页面;
  2. 即使 DOM 树结构变化,页面视觉布局未显著改变时,仍能准确定位元素;
  3. 适用于复杂的嵌套布局和动画效果,对元素的动态显示隐藏、重叠等情况也有较好的支持;
  4. 模拟用户视觉感知的方式,定位逻辑与实际用户行为更贴近

当然它也存在一些缺点:

  1. 因视觉干扰(如颜色相似、遮挡等)导致误判,小型页面元素(如图标、微小按钮)难以准确识别;
  2. 图像处理和模型推理需要大量计算资源,执行时间较长,依赖硬件支持(如 GPU)和深度学习框架(如 TensorFlow、PyTorch);
  3. 需要准备训练数据集并构建合适的机器学习模型,在不同分辨率和设备下,需要适配模型以确保识别稳定性;
  4. 贵、贵、还是贵。

相比于AI+图像识别,JavaScript+DOM树遍历实现简单、动态性强、性能高、精确性高,同时依赖也少。为了实现这一目标,我将采用以下步骤:

  1. 需求分析:详细分析自动化测试的需求,确定元素定位的关键点和优先级。
  2. 技术选型:选择合适的 JavaScript 框架和库,如 jQuery 或原生 DOM 操作 API。
  3. DOM 树遍历实现:编写脚本,通过递归遍历 DOM 树,动态获取元素的属性和位置。
  4. 实时更新:实现元素变化监控,确保在页面动态更新时,仍能准确定位元素。
  5. 测试与优化:在不同类型的网页上进行测试,优化代码性能,确保系统稳定性和可靠性。

结语

虽然 AI 图像识别技术在元素定位方面展现了巨大的潜力,但使用 JavaScript 动态 + DOM 树遍历的方法同样具有独特的优势。两者各有千秋,在不同场景下各展所长。通过这次项目的探索和实践,我不仅深入了解了元素定位的多种技术手段,更坚定了不断探索和创新的信心。未来,我将继续努力,将这些技术更好地应用于自动化测试中,为提升测试效率和质量贡献自己的力量。