Appium 图像识别在 UI 自动化测试中的应用

爱摸鱼的小狐狸 · 2023年09月28日 · 最后由 龙测科技 回复于 2023年10月08日 · 5165 次阅读

背景

为了提高 UI 自动化测试的稳定性,拓展更多的测试场景,我们在 UI 自动化测试中引入了图像识别并取得了不错的效果,希望下面的介绍可以给各位测试友友们一些启发和帮助。

场景 #1: 图片相似度在 UI 自动化测试中的应用

UI 自动化测试经常会碰到发布图片,更换头像,设置背景的场景,我们如何判断设置后的图片是否正确呢?这里我们以发布一张图片动态为例进行说明,当我们选择一张图片后,我们可以点击进行放大,并且截图保存,记录为期望结果,然后发布后在动态中点击发布后的图片也进行放大,再次截图保存,记录为实际结果。现在我们要做的就是通过 python 的 opencv 库来对这两张图片进行相似度对比,来判断两者是否一致。

设计思路

对比脚本

由于手机分辨率和屏幕的差异,为了提高精准度,在图片截取后可以缩放至同一尺寸后再计算相似度。

场景 #2:页面中识别指定的图片并返回坐标

UI 自动化测试中除了可以通过 id 和 xpath 进行元素定位并点击外,还可以通过识别指定的图片然后返回所在坐标,然后通过 tap 的方式进行点击,大家可以试试,效果和稳定性也是不错的,当 id 或者 xpath 没有或者不容易获取时,可以当做一个兜底方案,会有意想不到的效果。

场景 #3: 文字识别在 UI 自动化测试中的应用

UI 自动化测试用例设计时,大家经常会碰到页面元素的文字无法用 id 或者 xpath 进行定位,弹窗内容消失的太快来不及定位的场景。这时我们就可以先截图然后使用图片识别来获取图中的文字并返回对应结果或者坐标来快速的处理问题。

这种文字识别的脚本大家可以不用自己写,可以调用各大 AI 平台的现成 API,大部分都收费,但是基本都有免费配额,可以多申请几个账号轮换使用,如果使用率不高足够用了,这里就不放具体脚本了。

总结

图像识别的应用场景还有很多,欢迎大家补充,上面我只是列出了我们 UI 自动化测试中所涉及的场景,多谢!

共收到 2 条回复 时间 点赞

第一种 diff image 的方案我们也在使用,主要是针对那些相对来说比较固定,以及包含各种图标或者图片,不容易判断元素是否存在错位情况或者颜色错误的页面,比如登录页,设置页等。
第二种场景,在某些元素因为某些特别奇怪的原因导致各种奇怪问题,比如 webview 页面元素突然无法识别,某些元素明明能定位到,但是点击却没有反应等问题,我们也尝试过这种这种方式去做。PS:这种用图片来定位元素的方式其实早在 qtp 时代就已经支持了。

2楼 已删除

我们也支持以 OCR 识别的方式来做元素定位。
我们对图片相似度的处理,是通过引入对比余弦相似度比对算法,提升精准度;并且改进图片特征提取能力。
感兴趣的朋友可以前往体验~
https://testerhome.com/users/third_app_login/dragontesting

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册