引言
在自动化测试领域,实现精准的元素定位一直是一个巨大的挑战。为了应对这一挑战,我在对比了6种元素定位技术后,加之AI爆火,我最初计划设计一套基于图像识别和 AI 的自动化元素定位系统。然而,在一次偶然的机会中,我在 GitHub 上发现了一位大神已经实现并开源了这个项目。按时间推算,该项目在我设计前一个月就开源,也就是大神早在很久就开始设计,简直遥遥领先我N年,对大神仰慕之情犹如滔滔江水连绵不绝,膜拜膜拜。感兴趣的可以试用,溜得飞起。项目地址
推荐指数:★★★★☆
初衷与发现
最初,我被自动化测试中元素定位的难题所困扰。为了提升自动化测试的精准度和效率,我萌生了利用 AI 图像识别技术来设计一套自动化元素定位系统的想法。图像识别技术能够通过分析元素的外观和结构,准确定位网页中的各个元素,从而极大地提升测试的可靠性。
然而,在实施这一想法的过程中,我偶然在 GitHub 上发现了一位大神已经实现了这一愿景,并将项目开源分享给社区。看到如此优秀的作品,我不禁心生敬佩,但这并未打消我的念头,反而激发了我用另一种方法来实现自动化元素定位的决心。
挑战与解决方案
虽然 AI 图像识别是一种先进的技术,但我决定使用 JavaScript 动态 + DOM 树遍历的方法来实现自动化元素定位。这种方法通过遍历 DOM 树,动态获取元素属性和位置,具有灵活性强、实时性高等优点。
AI + 图像识别实现的方式有如下优点:
- 通过页面视觉特征定位元素,不依赖 DOM 结构,适用于动态渲染、Shadow DOM 和 canvas 渲染的页面;
- 即使 DOM 树结构变化,页面视觉布局未显著改变时,仍能准确定位元素;
- 适用于复杂的嵌套布局和动画效果,对元素的动态显示隐藏、重叠等情况也有较好的支持;
- 模拟用户视觉感知的方式,定位逻辑与实际用户行为更贴近
当然它也存在一些缺点:
- 因视觉干扰(如颜色相似、遮挡等)导致误判,小型页面元素(如图标、微小按钮)难以准确识别;
- 图像处理和模型推理需要大量计算资源,执行时间较长,依赖硬件支持(如 GPU)和深度学习框架(如 TensorFlow、PyTorch);
- 需要准备训练数据集并构建合适的机器学习模型,在不同分辨率和设备下,需要适配模型以确保识别稳定性;
- 贵、贵、还是贵。
相比于AI+图像识别,JavaScript+DOM树遍历实现简单、动态性强、性能高、精确性高,同时依赖也少。为了实现这一目标,我将采用以下步骤:
- 需求分析:详细分析自动化测试的需求,确定元素定位的关键点和优先级。
- 技术选型:选择合适的 JavaScript 框架和库,如 jQuery 或原生 DOM 操作 API。
- DOM 树遍历实现:编写脚本,通过递归遍历 DOM 树,动态获取元素的属性和位置。
- 实时更新:实现元素变化监控,确保在页面动态更新时,仍能准确定位元素。
- 测试与优化:在不同类型的网页上进行测试,优化代码性能,确保系统稳定性和可靠性。
结语
虽然 AI 图像识别技术在元素定位方面展现了巨大的潜力,但使用 JavaScript 动态 + DOM 树遍历的方法同样具有独特的优势。两者各有千秋,在不同场景下各展所长。通过这次项目的探索和实践,我不仅深入了解了元素定位的多种技术手段,更坚定了不断探索和创新的信心。未来,我将继续努力,将这些技术更好地应用于自动化测试中,为提升测试效率和质量贡献自己的力量。