实 验 简 介
Sikuli是麻省理工学院开发的,它的工作模式与人眼一样,直接识别图像。在墨西哥维乔印第安人(Huichol Indians)的语言里Sikuli是上帝之眼的意思。Sikuli是基于Jython的,因此Sikuli脚本中使用的语言是Python,下面是Sikuli的技术架构图,如图所示。
Sikuli IDE和Sikuli Script就是现在的SikuliX,我们将使用的版本是SikuliX1.1.1, 兼容Sikuli JAVA API,支持Python和Ruby,SikuliX通过定位图像和键盘鼠标来操作GUI(图形化用户界面),能很好的实现flash和桌面类应用的自动化,目前暂不支持移动端的使用,SikuliX官方网站:http://www.SikuliX.com/
与其他的UI自动化工具相比,Sikuli的优势在于,它是基于图片的颜色和形状来识别定位的,所以即使页面上的元素没有像id, name这些常规属性,我们也可以通过图像识别进行UI的交互操作。
实 验 目 的
(1)理解基于图像识别的自动化测试技术的应用。
(2)熟练使用SikuliX完成自动化测试。
实 验 流 程
1.SikuliX下载
下载地址:https://launchpad.net/Sikuli/SikuliX/1.1.1,找到下载文件,如图所示。
2.SikuliX安装
在电脑上新建文件夹(比如D:\\SikuliX),将下载好的Sikulisetup-1.1.1.jar放到该文件夹下,双击运行该文件。如果不能运行.jar文件,可以在命令提示符里输入‘java–jar SikuliXsetup-1.1.1.jar’,运行效果如图所示。注意在安装过程中,需要用户确定安装的工具,这里请按图来勾选,如有需要可选取Tesseract。
点击setup now后会弹出提示question,点击yes即可。如图所示。
安装完成后会在文件所在的文件夹下生成runSikuliX.cmd、SikuliX.jar、Sikuliapi.jar、SikuliX-1.1.1-SetupLog.txt、文件。
3.启动Sikuli IDE
点击runSikuliX.cmd,等待初始化后,得到Sikuli IDE的界面,如图所示。
4.Sikuli IDE功能介绍
SikuliXIDE功能区域提供很多实用功能,如图所示。
屏幕截图(Take screenshot):点击该按钮,进入屏幕截图状态,拖拽辅助线选取需要截取的界面元素,释放鼠标左键的同时,自动将该截图插入到编辑区中光标当前位置。使用快捷键 Ctrl+Shift+2(Command+Shift+2)也可激活截图状态,以完成对于弹出菜单、下拉框一类的控件的实时截图。该快捷键亦可通过主菜单 File->Preferences 进行自定义。
插入图片(Insert image):除直接截图外,用户也可通过点击该按钮导入已有的 PNG 格式图片文件。
指定查找区域(Region):给定一个查找范围。在使用的时候,Sikuli IDE会在指定区域内查找图片。
指定查找区域坐标(Location):给定一个查找的坐标偏移量,距屏幕左上角的xy方向的坐标偏移范围。
坐标限定(Offset):使用offset功能,Sikuli会调用asoffset()函数返回一个限定区域的坐标偏移量。
运行(Run):点击执行当前脚本。
慢速运行(Run in slow motion):点击后以较慢的速度执行当前脚本,以红色圆形外框显式标识每一次图像查找定位动作,便于程序调试中进行焦点追踪。
5.Sikuli IDE常用函数的使用
6.利用Sikuli IDE脚本实现C/S架构和B/S架构的自动化(以QQ音乐的自动化播放和百度搜索自动化为例)
(1)实现QQ音乐播放器自动播放音乐(C/S架构,其特点是在用户端以安装客户端的方式实现的程序)。
通过Sikuli IDE来实现整个操作,那么首先需要编写自动化脚本,前面已经提到了很多便捷的方法在这里就可以尝试使用一下。如图所示。
(2)实现百度搜索(B/S架构,也就是常用的浏览器和服务器交互的结构,在用户端是以浏览器来访问并操作的)。
和打开qq音乐一样,只是这个过程变成了打开浏览器,输入的是网址,如图所示。
从上面的两个例子可以看出,Sikuli IDE功能很强大!不光可以操作web页面,还可以操作系统中的应用程序(比如QQ)。大家可以尝试操作一下自己的QQ空间或是其他自己感兴趣的应用软件。
思 考 练 习
(1)思考基于图像识别的自动化测试工具SikuliX是如何工作的。
下周分享:核心实验:利用Python调用SikuliX接口