智能化截图

当测试框架自身的断言机制失效后,图像断言又恢复了它的使命;拿Uiautomator来说,绝大多数情况下从Node中获取的元素信息是唯一的,可做断言用;同样,Selenium想精确找到某个Element的Xpath|Selector也并非难事,但是否所有情况下都那么无懈可击?答案肯定是有buffer的。那么,下面就探讨一种落地时趟过的应对方案。


图像比对

意义在于比较两张图像的不同,或者在Target中找到Source图来确定当前的步骤是否正确;

前面的文章已经针对某些处理手法初步做了介绍,因此不在此额外赘述;图像比对的重点固然是在【比对】上,但是如何方便的获取【图像】也是重中之重。

截图

移动端简单的截图方法可以用adb, adb取adb传,举个栗子:

adb shell screencap -p /mnt/sdcard/DCIM/Camera/Joyboy.jpg

Web端简单的截图方法可以用Java方法,举个栗子:

File scrFile = driver.getScreenshotAs(OutputType.FILE);

智能化部分截图

看完上面的命令后可能你会问了,如何才能做到只截取图片中想要的某一部分而不是整张图呢?

Web端的方法大致是这样的:(这里小编仅在后台做了截图)

智能化截图_第1张图片
后台调用直接取
智能化截图_第2张图片
随步骤自动获取断言块

移动端多做了一层封装,引入了一点人机交互:(支持:自动截图,手动框图,摇一摇唤醒等功能)

智能化截图_第3张图片
随时随地By需求截图

实现框图功能的部分代码如下:

添加摇一摇监听:

在需要截图的时候唤醒该功能,不用的时候收起来

总结:智能化截图的目的旨在将截图过程准确的、灵活的、多兼容性的附着在自动化测试过程之中,伴随测试的始末,提供数据进行分析和比较;有了图像资料,测试开始变得有眼睛、有方向、可查、可追溯(相对更一针见血的)进而可思考;别忘了图像分类、识别是人工智能的一个主流分支哦,后面的空间留给大家脑洞大开,欢迎一起探讨!

你可能感兴趣的:(智能化截图)