自动化测试_对象无法识别的终极必杀技

来源:互联网 发布:淘宝优惠卷在哪领 编辑:程序博客网 时间:2024/06/05 01:02

 


 

原始需求:

做自动化测试的时候经常会遇到对象无法识别,但是又一定需要从界面上看出是啥情况,才能根据不同做出下一步。

 

尝试一:悲催的OCR

最初想着能不能直接拷屏,然后从拷屏的结果图片中读出文字,然后对字符串进行判断来实现。

 

实验了下面三个工具:

tesseract-ocr-setup-3.01-1.exe

ABBYYFineReaderCorporate_lv.xp500.com.rar

miniOCR.zip

 

发现识别成功率非常的低。琢磨了半天明白了原因,并非工具有什么问题,主要问题是拷屏得到的图片精度太低了,根本达不到300dpi,拷屏的最多也就300dpi的30%,如此粗糙的图片当然没法识别了。这些工具要想识别率高,最好是直接高精度扫描的图片进行识别。

 

 

尝试二:居然不相同

 

先写个程序,进行拷屏,相隔两条命令拷屏的,期间没有任何操作,理论上说应该是得到了一模一样的两张图片了。如何判定两张图片是相同的呢。想着既然是一样的,直接打开文件按字节比对不就完了,同学,中招了吧,无论bmp还是jpg,不单文件内容不是完全相同,甚至有时候连文件大写也会有字节的差异。

 

猜测:是不是因为有压缩的问题,抽样了?

 

 

尝试三:还是使用工具比对吧

 

尝试了:

DiffImgpoto.rar

PicCompare_62899.zip

DuplicatePhotoFinder_ha.zip

 

也不是说他们不好,问题是都是图形操作界面的,对于我来说,还是命令行的最好。于是,主角登场了:

ImageMagick-6.3.2-9-Q16-windows-static.exe


百度了一下介绍:

ImageMagick是一套功能强大、稳定而且免费的工具集和开发包,可以用来读、写和处理超过89种基本格式的图片文件,包括流行的TIFF、JPEG、GIF、 PNG、PDF以及PhotoCD等格式。利用ImageMagick,你可以根据web应用程序的需要动态生成图片, 还可以对一个(或一组)图片进行改变大小、旋转、锐化、减色或增加特效等操作,并将操作的结果以相同格式或其它格式保存,对图片的操作,即可以通过命令行进行,也可以用C/C++、Perl、Java、PHP、Python或Ruby编程来完成。同时ImageMagick提供了一个高质量的2D工具包,部分支持SVG。现在,ImageMagic的主要精力集中在性能、减少bug以及提供稳定的API和ABI上。


  ImageMagick 是一个用来创建、编辑、合成图片的软件。它可以读取、转换、写入多种格式的图片。图片切割、颜色替换、各种效果的应用,图片的旋转、组合,文本,直线, 多边形,椭圆,曲线,附加到图片伸展旋转。ImageMagick是免费软件:全部源码开放,可以自由使用,复制,修改,发布。支持大多数的操作系统。



专门down的静态库的,down了好久才弄下来,基本上就是10k以内徘徊。安装上拷贝了安装目录,卸载了以后,直接使用之前备份的安装目录,发现能用,算不算是绿色版本捏,需要有人测试一下才知道。

 

安装程序:

http://download.csdn.net/detail/testingba/4591599

 

安装目录压缩包:

http://download.csdn.net/detail/testingba/4591614

 

 

测试一下这个工具的效果:

直接拷贝屏幕做了01.jpg,再次拷贝屏幕做了02.jpg,拷贝了02.jpg为03.jpg,然后用画图打开03.jpg,往上面画了一个点,保存。

 

测试一把:

compare.exe -metric mae 01.jpg 02.jpg d1.jpg

返回:0

compare.exe -metric mae 02.jpg 03.jpg d2.jpg

返回:100.863

 

最夸张的是看比对结果d1.jpg和d2.jpg,就增加了一个点而已。

 

D2.jpg

 

 


好了,有了这个应该能指哪打哪了。遇到对象无法识别,又必须要得到界面返回的时候,预先存一张指定区域图片下来,下次同样操作得到区域图片,然后进行图片比对就行了。



 

 

 

原创粉丝点击