自动化测试工具Sikuli的安装以及应用
一、介绍以及安装
1、Sikuli的介绍
Sikuli是一个利用图片进行可视化检查和自动化图形界面的技术,一个方便通过截图写出可视化脚本的集成开发工具Sikuli IDE,脚本可以不经过api的编辑器直接自动化搜索到任何在你电脑屏幕上可以看见的东西。
你可以利用程序控制一个web的页面,或者在各种操作系统上运行的桌面程序。
2、安装
在官网可分别下载MAC OS X 、Windows和Linux操作系统提供的安装文件以及安装方法介绍。
我先提供一下简单的方法:
百度网盘链接:链接: https://pan.baidu.com/s/1I75kMKR43pmq05KcXmcwIg 提取码: 99j5
下载至本地、安装java jdk ,sikulix要求jdk8.0+。再行安装python,我这里安装的是python2.7
全部安装完毕之后可直接运行 runsikulix.cmd
建议大家还是自行从官网下载安装、了解全部的执行过程
官网地址:http://www.sikuli.org/download.html
Sikuli页面布局
从上面的截图可以看出Sikuli页面非常简洁易懂,页面上划分了多个区域,我们一般使用IDE提供的操作方法就可以完成一个程序的自动化测试工作了、当然我们可以利用更多的方法来进行拓展。
之前写了一小段的测试用例,使用起来不还是很方便的;
但是也总结了几点:
1、多个屏幕对程序运行的影响还待考察(案例编写必须严格在一个屏幕下进行,否则复杂度大大提高,我把notes扔到另外一个屏幕,结果脚本报错) 另外,截图要用他自带的工具比较方便
2、页面有相同图标的情况下需要手动跳转点击的位置(两个相同的图标的情况下,就代表你不能更换图标的位置)
3、规模脚本如何编写规范?首先,桌面主题就要统一,否则可能对截取造成问题
以如下问题为例子,经我的windows换用windows经典主题后,我在工行主题上截取的图,就无法使用了,脚本无法运行
4、桌面上存在小工具遮挡的时候也不行(你要运行点击的图标或者定位上面不能有任何的遮挡物,必须保证页面只有你的一个应用被打开)
3、实际操作:
在使用的过程中对工具所能提供的快捷方式都进行了试验,最常用的方法总结如下:
键盘操作,输入
type() #输入内容 (不建议使用,可以由于输入法的问题导致不可预知的错误)
paste () #文本输入(建议使用,单纯的指数复制的你的内容并进行粘贴)
页面断言,查找数据:
wait() #设置等待时间
exists() #判断等待页面元素是否存在
鼠标动作:
click() #点击事件--单点
doubleClick() #点击事件--双击
rightClick("") #点击事件--鼠标右键点击
dragDrop("1606202686079.png", "1606202694506.png") #将第一个元素拖动至第二个元素位置
既然我们进行了测试那么就也需要进行断言
if exists("查看的内容图片"):
click("查看的内容图片")
print"断言的内容"
else:
print("断言的内容")
页面如果不存在该内容那么脚本就自然的会进行跳过的继续执行下一步的操作。
4、键盘操作
记录了SikuliX中按键操作的方法。
控制字符
键名 | sikuliX中的命令 |
---|---|
Shift | type(Key.SHIFT) |
Ctrl | type(Key.CTRL) |
Alt键 | type(Key.ALT) |
Tab(制表符) | type(Key.TAB) |
大写锁定 | type(Key.CAPSLOCK) |
输入 | type(Key.ENTER) |
删除 | type(Key.DELETE) |
退格键 | type(Key.BACKSPACE) |
插入 | type(Key.INSERT) |
Home | type(Key.HOME) |
End | type(Key.END) |
ESC | type(Key.ESC) |
空格 | type(Key.SPACE) |
视窗 | type(Key.WIN) |
换页 | type(Key.PAGE_UP) |
向下翻页 | type(Key.PAGE_DOWN) |
列印画面 | type(Key.PRINTSCREEN) |
数字键盘锁 | type(Key.NUM_LOCK) |
滚动锁 | type(Key.SCROLL_LOCK) |
F1 | type(Key.F1) |
F2 | type(Key.F2) |
F3 | type(Key.F3) |
F4 | type(Key.F4) |
F5 | type(Key.F5) |
F6 | type(Key.F6) |
F7 | type(Key.F7) |
F8 | type(Key.F8) |
F9 | type(Key.F9) |
F10 | type(Key.F10) |
F11 | type(Key.F11) |
F12 | type(Key.F12) |
光标键:向上 | type(Key.UP) |
光标键:向下 | type(Key.DOWN) |
光标键:左 | type(Key.LEFT) |
光标键:向右 | type(Key.RIGHT) |
向上移动光标两次 | type(Key.UP * 2) |
向下移动光标两次 | type(Key.DOWN * 2) |
向左移动光标两次 | type(Key.LEFT * 2) |
向右移动光标两次 | type(Key.RIGTH * 2) |
按特定键 | KeyDown(Key.*) 需要使用Region()进行区域设置。 |
释放特定键 | KeyUp(Key.*) 需要使用Region()设置区域。 |
快捷键使用
常见操作 | 快捷键 | sikuliX中的命令 |
---|---|---|
复制 | Ctrl + C | type(“ c”,Key.CTRL) |
剪下 | Ctrl + X | type(“ x”,Key.CTRL) |
贴上 | Ctrl + V | type(“ v”,Key.CTRL) |
搜索 | Ctrl + F | type(“ f”,Key.CTRL) |
打印 | Ctrl + P | type(“ p”,Key.CTRL) |
撤消 | Ctrl + Z | type(“ z”,Key.CTRL) |
重做 | Ctrl + Y ;Ctrl + Shift + Z | type(“ y”,Key.CTRL);type(“ z”,Key.CTRL + Key.SHIFT) |
关闭标签 | Ctrl + F4 | type(Key.F4,Key.CTRL) |
还原标签 | Ctrl + Shift + T | type(“ t”,Key.CTRL + Key.SHIFT) |
浏览器缓存刷新(强制刷新) | Ctrl + F5 | type(Key.F5,Key.CTRL) |
关闭窗口 | Alt + F4 | type(Key.F4,Key.ALT) |
最小化所有窗口 | Windows + M | type(“ m”,Key.WIN) |
显示桌面 | Windows + D | type(“ d”,Key.WIN) |
最小化窗口(当窗口为正常大小时)恢复为原始大小(当窗口为最大化时) | Windows +光标键:向下,如果最大化,请执行上述两次。 | type(Key.DOWN,Key.WIN) |
窗口最大化 | Windows +光标键:向上 | type(Key.UP,Key.WIN) |
切换活动窗口 | Windows + Tab;Windows + Shift + Tab | type(Key.TAB,Key.WIN);type(Key.TAB,Key.WIN + Key.SHIFT) |
启动任务管理器 | Ctrl + Shift +ESC | type(Key.ESC,Key.CTRL + Key.SHIFT) |
启动资源管理器 | Windows +e | type(“ e”,Key.WIN) |
运算符
运算 | sikuliX中运算符 |
---|---|
加成 | + |
减法 | – |
乘法 | * |
除 | / |
余数计算 | % |
除数的整数部分 | // |
A的b次方 | A ** B |
A的负数 | -A |
逻辑或 | or |
逻辑与 | and |
否认 | not |
a大于b | a> b |
a小于b | a <b |
a小于或等于b | a <= b |
a大于或等于b | a >= b |
a等于b | a== b |
a不等于b | a!= b |
就介绍到这里了、有什么不足的地方,望批评指正,欢迎交流