基于图像识别的自动化测试框架(GUI自动化测试)认知

1、Sikuli X:建议使用java调用,底层也是基于OpenCV实现
(1)开源的基于PC端图像识别处理的自动化工具。
(2)使用jython格式编程语言
(3)大多数依赖于被测试程序的类型而进行特征识别(属性识别),但是面对不同的程序类型,而无法有效的处理。但是图像处理可以不需要依赖程序类型。

提供的核心类:Screen,Region
Screen:对全屏进行识别,效率较低
Region:解决界面部分区域的识别,效率更高

图像识别的原理:模板匹配
核心思路:用小图去匹配大图里的位置,返回小图在大图中匹配成功的坐标位置,然后将鼠标移至该位置,并进行相应的操作,并根据页面的反馈,进行相应的判断。
(1)对需要操作的目标对象进行截图,得到一张小图并进行保存(手动截图放置ide下的图片文件夹中
(2)对当前屏幕进行截屏,获得一张大图,可以保存,也可以在内存中引用。(使用Robot对象截图,返回BufferedImage;使用int[weight][height]=bufferImage.getRGB()获取像素点值
(3)利用模板匹配,在大图中,按像素对小图片进行滑动,找到小图片所在的位置。(见下方图像滑动的算法)
对该坐标位置(X,Y)加上小图片的调试的一半(H),宽度的一半(W),得到小图片的中心位置,就是我们要操作的坐标(X+Y,W+H)
(5)将鼠标移至该坐标,进行相应操作(点击、右键等)
特点:由于是基于像素匹配,所以,如果界面风格发生变化,可能出现识别不到的情况。

(1)通过相同像素点的占比来决定,(2)通过像素点的RGB值的容错范围,如:200,150,180 ,容错范围在10%以内

图像滑动的算法
(a)遍历x,y方向,获取大图和小图的像素点的值
(b)先查找小图的4个顶点,可以减少一些无效的匹配。(x,y如果对应左上角顶点。1、x+小图的宽度,y不变,可以得到小图右上角的顶点。2、y+小图的高度,x不变,可以得到小图左下角的顶点.。3、x+小图的宽度,y+小图的高度,可以得到小图右下角的顶点)
(c)还可以查找小图的中心点,再次减少一些无效的匹配(x+小图宽度的一半,y+小图高度的一半,得到中心点)
(d)当然,也可以查找一些其他的具体位置的点

缺点:对像素要求较高,图片的分辨率及色彩,可能一台机器上可以,另一台机器上就不行,需要重新截图,只能检测当前页面显示的内容,后台进程无法操作

OpenCV 是一套开源的计算机视觉库,是一套C++开发的代码库,并提供了java和python的接口。

发布了14 篇原创文章 · 获赞 3 · 访问量 303

猜你喜欢

转载自blog.csdn.net/xiaomin1328/article/details/105167898