桌面自动化测试工具:sikuli

jopen 10年前

一 简介

Sikuli在墨西哥惠慈尔土著人的语言中这是"上帝之眼"的意思,是一个利用图片进行可视化检索和自动化图形界面的技术。贴个示例程序,就很容易明白了:

桌面自动化测试工具:sikuli

也就是说,用户不需要写出一行行代码,而是用屏幕截图的方式,用截出来的图形元素组合出神奇的程序。Sikuli作为一个代理,就像人看着屏幕,遇到指定的图像后使用鼠标和键盘进行操作。

目前sikuli还未广泛使用,自身也有些bug未解决,但是已经有一些手机测试自动化使用它。我觉得sikuliGUI环境自动化方面还是大有可为的。

安装

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,ScrollLockPause键,支持所有键盘键。

       观察屏幕的方法,我除了 onChange方法,其他方法均有使用。

1waitPSseconds

定义:在给定的时间(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~z1~10

注意:当需要同时按下多个键时,特殊键和普通键之间使用“+”连接。如type(“hello”+Key.ENTER). 如要同时使用修饰键,使用“,”连接,如typeKey.F4,KEY_ALT

注意事项

1.sikuli不支持中文,因此无论在编程中或者保存路径,都不可以使用中文!否则运行报错。

2.图像因素:尽量避免比较大的目标,因为大目标必然需要比较大量像素,准确性和速度都有下降。尽量选择可以唯一确定的图像因素。

3.使用变量保存需多次使用的图像,Sikuli会将所有图像都另存为图片。

左图和右图作用一样,但右图的做法会在工作路径保存两个完全相同的图像。

4.sikuli不可在远程桌面编程,应该是它的bug,一截图就死机。

5.虚拟机需要全屏,点击位置才不会出错。

Sikuli的类和方法在本篇文章内未能一一列举,比如findgetOSopenAppgetClippboard等方法,EnvFinderLocationRegionVDict等类,大家有兴趣可以研究一下。

来自:http://www.ltesting.net/html/32/209032-194697.html

</span></span></span>