桌面自动化测试工具:sikuli
一 简介
Sikuli在墨西哥惠慈尔土著人的语言中这是"上帝之眼"的意思,是一个利用图片进行可视化检索和自动化图形界面的技术。贴个示例程序,就很容易明白了:
也就是说,用户不需要写出一行行代码,而是用屏幕截图的方式,用截出来的图形元素组合出神奇的程序。Sikuli作为一个代理,就像人看着屏幕,遇到指定的图像后使用鼠标和键盘进行操作。
目前sikuli还未广泛使用,自身也有些bug未解决,但是已经有一些手机测试自动化使用它。我觉得sikuli在GUI环境自动化方面还是大有可为的。
二 安装
Sikuli的安装很简单,首先安装最新版java runtime,然后在 http://groups.csail.mit.edu/ uid/sikuli /download.shtml下载Sikuli IDE安装就可以了。Sikuli的编程语言为python,用户按照python编程习惯就可以了。
三 函数介绍
在观察屏幕方面,目前支持4种方法。wait(在指定时间内等待某图像出现),waitVanish(在指定时间内等待某图像消失),onAppear(当某图像出现,做相应动作),onChange(有变化后做相应动作).在动作方面,Sikuli可以完成大多数的鼠标和键盘操作,click(左键单击),doubleClick(双击),rightClick(右键单击),hover(鼠标悬停),dragDrop(拖拽),keyDown(键盘按下),keyUp(键盘弹起),type(键盘输入),paste(粘贴)等等。除了PrintScreen,ScrollLock和Pause键,支持所有键盘键。
观察屏幕的方法,我除了 onChange方法,其他方法均有使用。
(1)wait(PS,seconds)
定义:在给定的时间(seconds)内等待指定图像(PS).时间以秒为单位,可以使用FOREVER永久等待。
示例:
在启动操作系统后,需要等待一段时间,桌面图标才会出现。
(2</span>)waitVanish(PS,seconds)</span></span></p> 定义:在给定时间(seconds)内等待指定图像(PS)消失。时间以秒为单位,可以使用FOREVER永久等待。 示例:在卡巴升级过程中,需等待升级的图标消失,才能继续下面的操作。 (3</span>)onAppear</span>(PS</span>,handler</span>)</span></p> 定义:当指定图像出现(PS),触发事件,交由相关事件处理器(handler)处理。 示例:启动VMware后,观察10秒,当启动图标出现后,点击启动图标。 鼠标操作的方法,定义都大同小异,仅以click为例做概要介绍。 (1)click(PS) 定义:在指定图像上,鼠标左键点击一下。 示例:虚拟机关机时,需要点击关机按钮。 键盘操作方法不多做介绍了,重点介绍一下各种键的名称和使用。</span></p> (1)修饰键常量 KEY_ALT, KEY_CMD, KEY_CTRL, KEY_META, KEY_SHIFT, KEY_WIN (2) 特殊键 Key.ALT, Key.BACKSPACE, Key.DOWN, Key.END, Key.ENTER, Key.ESC, Key.DELETE, Key.F1 ~ Key.F15, Key.HOME, Key.INSERT, Key.LEFT, Key.PAGE_DOWN, Key.PAGE_UP, Key.RIGHT, Key.TAB, Key.UP (3)普通键 A~Z, a~z,1~10 注意:当需要同时按下多个键时,特殊键和普通键之间使用“+”连接。如type(“hello”+Key.ENTER). 如要同时使用修饰键,使用“,”连接,如type(Key.F4,KEY_ALT) 1.sikuli不支持中文,因此无论在编程中或者保存路径,都不可以使用中文!否则运行报错。 2.图像因素:尽量避免比较大的目标,因为大目标必然需要比较大量像素,准确性和速度都有下降。尽量选择可以唯一确定的图像因素。 3.使用变量保存需多次使用的图像,Sikuli会将所有图像都另存为图片。 左图和右图作用一样,但右图的做法会在工作路径保存两个完全相同的图像。 4.sikuli不可在远程桌面编程,应该是它的bug,一截图就死机。 5.虚拟机需要全屏,点击位置才不会出错。 Sikuli的类和方法在本篇文章内未能一一列举,比如find,getOS,openApp,getClippboard等方法,Env,Finder,Location,Region,VDict等类,大家有兴趣可以研究一下。 四 注意事项
来自:http://www.ltesting.net/html/32/209032-194697.html