Sikuli基本教程
在 GUI 测试中,识别个性化控件、模拟用户行为及对校验屏幕显示结果常常成为自动化测试的瓶颈,此类测试场景大多数情况下仍然依赖于手工测试。Sikuli是一种新兴的图形化编程技术,它摆脱了对控件 API 的依赖,通过当前屏幕的实时图像检索获取操作对象,模拟用户行为,匹配屏幕区域以校验真实的视觉显示结果。
一、sikuli简介
Sikuli是一个利用图片进行可视化检索和自动化图形界面的技术。发布的初版Sikuli程序中包含了Sikuli脚本语言,一个可视化的适合Jython的API和一个方便利用截图写出可视化脚本的集成开发环境Sikuli IDE。Sikuli脚本可以不经过API的编译器直接自动化搜索到任何你能在屏幕上见到的东西。你可以利用程序控制一个web页面,或者在各种操作系统上运行的桌面程序,或者是模拟器下的iphone程序。
二、安装及使用
1、sikuli的安装
在下载区可获得为 Mac OS X、Windows 和 Linux 操作系统所提供的安装文件及安装方法简介。在 Windows 平台下,要求有 Java 6 的运行环境支持,若要正常使用 1.0rc2 版本中新增的扩展组件 Sikuli Guide,还需更新 Java 至当前最新版本。在 Linux 平台上,除了要安装 Java6 的运行环境之外,还需安装 wmctl 和 opencv2.0 的 libcv4, libcvaux4, libhighgui4 包。
2、工作环境介绍
Sikuli IDE是一个方便编写与执行Sikuli脚本的环境,界面由菜单栏、工具栏、侧边栏、编辑区、控制台和状态栏六部分组成。
韩国现代屏幕截图(Take screenshot):点击该按钮,进入屏幕截图状态,拖拽辅助线选取需要截取的界面元素,释放鼠标左键的同时,自动将该截图插入到编辑区中光标当前位置。使用快捷键 Ctrl+Shift+2可激活截图状态,以完成对于弹出菜单、下拉框一类的控件的实时截图。该快捷键亦可通过主菜单 File->Preferences 进行自定义。
插入图片(Insert image):除直接截图外,用户也可通过点击该按钮导入已有的 PNG 格式图片文件。
建立屏幕区域(Create region):点击该按钮,进入屏幕区域选择状态,拖拽定位十字线选取屏幕区域。释放鼠标左键,即可将当前选中区域的屏幕坐标信息插入到编辑区中。
运行(Run):点击执行当前脚本。快捷键为 Ctrl+R。
慢速运行(Run in slow motion):点击后以较慢的速度执行当前脚本,以红圆形外框显式标识每一次图像查定位动作,便于程序调试中进行焦点追踪。快捷键为 Ctrl+Alt+R。
左侧侧边栏中分类列出了部分常用函数,点击函数名可快速将其插入到编辑区,若该函数需截图作为参数,则自动转入屏幕截图状态。下方的状态栏可用于查看当前行号,与行首 Tab 缩进的层级 ( 列号 )。
右边区域上半部分为脚本编辑区域,我们的自测化测试脚本就是在这个区域编写完成。
下半部分为提示信息,不管运行成功与失败,都会给出相应的提示信息。
三、sikuli脚本
Sikuli 的脚本编写遵循 Python 语法规范,其本身提供了多种自定义类及其自定义方法,由于 Sikuli 基于 Jython,其核心代码由 Java 编写,可在用户自定义的 Java 工程中将其作为 Java 标准类库进行引用。
大体上了解Sikuli 的界面后,下面通过一个自动打开 Firefox 浏览器,并登录 Gmail 的简单实例来快速了解 Sikuli 脚本。
上图所示的 Sikuli 脚本首先单击展开开始菜单,接着单击 Firefox 图标启动浏览器。待 Firefox 的工具栏出现后,以工具栏位置为基准,向右偏移 300 的距离以定位到地址栏并鼠
标单击将光标置入地址栏,然后在地址栏中输入 gmail 网址。待登录界面出现,单击用户名输入框并输入用户名信息,然后键入 Tab 键,使密码输入框获得焦点并输入密码信息,最后单击 Sign in 按钮完成登录。
从该示例脚本中不难发现 Sikuli 最显著的特——将 GUI 对象的屏幕截图作为函数的参数直接引用,整个代码的语义清晰明了,可读性极强。脚本执行过程中,利用图像检索算法分析匹配当前屏幕中对应的控件,并对其应用相应的鼠标或键盘操作。这种方式使得我们在脚本编写时,既无需关心繁琐的应用程序相关 API 亦不用获取 Web 内容对象。
编辑完成的 Sikuli 脚本可通过 File -> Save 进行保存。在 Windows 平台上将保存为一个后缀为 .sikuli 的文件夹,其中包括脚本中所使用到的所有 PNG 图片、.py 后缀的源代码以及一份显示源码的 HTML 文件。
编写调试完成的 Sikuli 脚本最终可通过菜单 File->Export executable 生成以 .skl 为后缀的可执行文件。生成这种格式的可执行文件后,使用命令行工具或直接双击该文件即可便捷地运行该脚本了。
二手小型货车四、sikuli语法
如果命令由两个词语组成那么第二次的首字母要大写。
1)capture(*args)
截取指定区域中的图像,args是制定的参数,是4个坐标,x,y,w和h;
2)click(img, modifiers=0);clickAll(img, modifiers=0)
单击,多个modifiers之间用or(|)分隔;clickAll()可用于批量的操作某事件;
3)doubleClick(img, modifiers=0);doubleClickAll(img, modifiers=0)
双击;
4)rightClick(img, modifiers=0)
右击;
5)closeApp(app);openApp(app)
关闭或者打开应用程序
6)dragDrop(src, dest)
src为实际需要拖动的按钮,dest为需要拖动到的目的地,比如应用在调整声音音量;
7)find(img),findAll(img)
搜索目标范围内最符合的结果;结合使用比如可以到目标结果然后双击或批量操作;
8)popup(msg)
弹出一个提示信息对话框;
9)type(*args)
输入内容
10)Key class
用于键盘输入,这是一个类。应用时可以使用Key.ENTER,Key.DELETE来表示输入,删除;一些特殊的键盘按键则用KEY_CTRL,KEY_ALT来表示
保湿眼霜推荐五、优点及缺点
1、优点:
1)整体上sikuli小巧、便捷、容易上手
2)sikuli脚本可以不经过API的编译器直接自动化搜索到任何你能在屏幕上看到的东西
3)对各种程序都适合
4)不存在标准控件和非标准控件的问题
5)相对位置概念较小,要求不高(但是对象本身尺寸有影响)
6)一次编码,多次运行(基于java的)
7)jython和java的支持,用编程的方式比较容易扩展
2、缺点:
1)图片的分辨率、彩、尺寸、唯一性对程序的影响
2)IDE 处于开发初级阶段,稳定性和易用性存在一定问题
3)变形金刚卷土重来电影只能测试ui界面的反馈和输出
4)截图的话,脚本存储占用空间较大exo成员资料
5)相似度调整需要手动一个个的调整,工作量大
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论