(完整)Sikuli基本教程
a t
i m e a
n d
A
l l t
h i n g
s i n t h e i r b e i n g a r e g o o d f o r s o 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 脚本的环境,界⾯由菜单栏、⼯具
栏、侧边栏、编辑区、控制台和状态栏六部分组成。
i r b e i n g a r e g o o d f o r s 屏幕截图(Take screenshot ):点击该按钮,进⼊屏幕截图状态,拖拽辅助线选取需要截取的界⾯元素,释放⿏标左键的同时,⾃动将该截图插⼊到编辑区中光标当前位置。使⽤快捷键 Ctrl+Shift+2可激活截图状态,以完成对于弹出菜单、下拉框⼀类的控件的实时截图。该快捷键亦可通过主菜单 File->Preferences 进⾏⾃定义。插⼊图⽚(Insert image ):除直接截图外,⽤户也可通过点击该按钮导⼊已有的 PNG 格式图⽚⽂件。
建⽴屏幕区域(Create region ):点击该按钮,进⼊屏幕区域选择状态,拖拽定位⼗字线选取屏幕区域。释放⿏标左键,即可将当前选中区域的屏幕坐标信息插⼊到编辑区中。
运⾏(Run ):点击执⾏当前脚本。快捷键为 Ctrl+R 。
慢速运⾏(Run in slow motion ):点击后以较慢的速度执⾏当前脚本,
以红⾊圆形外框显式标识每⼀次图像查定位动作,便于程序调试中进⾏焦点追踪。快捷键为 Ctrl+Alt+R 。
a t
i m e a
n d
A
l l tjava编译器ide最新版下载
h i n
g
o r s o 左侧侧边栏中分类列出了部分常⽤函数,点击函数名可快速将其插⼊到编辑区,若该函数需截图作为参数,则⾃动转⼊屏幕截图状态。下⽅的状态栏可⽤于查看当前⾏号,与⾏⾸ Tab 缩进的层级 ( 列号 )。
右边区域上半部分为脚本编辑区域,我们的⾃测化测试脚本就是在这个区
下半部分为提⽰信息,不管运⾏成功与失败,都会给出相应的提⽰信息。
三、sikuli 脚本
Sikuli 的脚本编写遵循 Python 语法规范,其本⾝提供了多种⾃定义类及其⾃定义⽅法,由于 Sikuli 基于 Jython ,其核⼼代码由 Java 编写,可在⽤户⾃定义的 Java ⼯程中将其作为 Java 标准类库进⾏引⽤。
⼤体上了解Sikuli 的界⾯后,下⾯通过⼀个⾃动打开 Firefox 浏览器,并登录 Gmail 的简单实例来快速了解 Sikuli 脚本。
上图所⽰的 Sikuli 脚本⾸先单击展开开始菜单,接着单击 Firefox 图标启动浏览器。待 Firefox 的⼯具栏出现后,以⼯具栏位置为基准,向右偏移 300 的距离以定位到地址栏并⿏标单击将光标置⼊地址栏,然后在地址栏中输⼊
a t
i m e a
n d
A
l l t
h i n g s i n t h e i r b e i n g a r e g o o d f o r s o gmail ⽹址。待登录界⾯出现,单击⽤户名输⼊框并输⼊⽤户名信息,然后键⼊ Tab 键,使密码输⼊框获得焦点并输⼊密码信息,最后单击 Sign in 按钮完成登录。
从该⽰例脚本中不难发现 Sikuli 最显著的特⾊——将 GUI 对象的屏幕截图作为函数的参数直接引⽤,整个代码的语义清晰明了,可读性极强。脚本执⾏过程中,利⽤图像检索算法分析匹配当前屏幕中对
应的控件,并对其应⽤相应的⿏标或键盘操作。这种⽅式使得我们在脚本编写时,既⽆需关⼼繁琐的应⽤程序相关 API 亦不⽤获取 Web 内容对象。
编辑完成的 Sikuli 脚本可通过 File -> Save 进⾏保存。在 Windows 平台上将保存为⼀个后缀为 .sikuli 的⽂件夹,其中包括脚本中所使⽤到的所有 PNG 图⽚、.py 后缀的源代码以及⼀份显⽰源码的 HTML ⽂件。
编写调试完成的 Sikuli 脚本最终可通过菜单 File->Export executable ⽣成以 .skl 为后缀的可执⾏⽂件。⽣成这种格式的可执⾏⽂件后,使⽤命令⾏⼯具或直接双击该⽂件即可便捷地运⾏该脚本了。
如果命令由两个词语组成那么第⼆次的⾸字母要⼤写。
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 为需要拖动到的⽬的地,⽐如应⽤在调整声⾳⾳量;
a t
i m e a
n d A l l t h i n g s i n t h e i r b e i n g a r e g o o d f 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)截图的话,脚本存储占⽤空间较⼤
5)相似度调整需要⼿动⼀个个的调整,⼯作量⼤

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。