Sikuli-X简单的使用

Sikuli是识别和控制GUI组件进行UI自动化测试的技术,它是有MIT的研究人员开发进行设计的Sikuli在墨西哥维乔印第安人(Huichol Indians)的语言里是上帝之眼的意思Sikuli的工作模式与人眼一样,直接识别图像。这个项目的主创人员之一是来自台湾的张琮翔

Sikuli的最新版本为Sikuli X-1.0rc2。在其官方网站下载区可获得为 Mac OS X、Windows 和 Linux 操作系统所提供的安装文件及安装方法简介,

Sikuli需要JDK1.6版本支持。安装好后,打开Sikuli-IDE ,如下图所示,界面由主菜单栏、工具栏、方法栏、编辑区、日志栏和状态栏六部分组成

Sikuli-X简单的使用_第1张图片

Sikuli提供的常用方法主要有查找、鼠标动作、键盘动作、事件观测4种类型

Sikuli-X简单的使用_第2张图片

查找主要是对判断元素是否在页面存在以及等待元素

Sikuli-X简单的使用_第3张图片

鼠标动作主要是模拟鼠标的点击、双击、右击、移动、拖拽

Sikuli-X简单的使用_第4张图片

键盘动作主要是模拟键盘的输入和粘贴

Sikuli-X简单的使用_第5张图片

事件观测主要是元素出现、消失以及屏幕区域变化对程序的处理


用Sikuli-X做一个简单的减法运算的用例,Sikuli-X使用的是Jython脚本语言,代码如下

import os  #导入os包
command = 'taskkill /im calc.exe' #定义一个结束进程的命令字符串
#os.popen('calc.exe')   #python打开应用程序的方法
#openApp('calc.exe')    #Sikuli打开应用程序的方法

a = App.open("calc.exe")   #Sikuli打开应用程序的方法
   
wait("1481855580087.png")  #等待元素出现

click("1481855580087.png")  #点击元素

wait("1481855635062.png")

click("1481855635062.png")

wait("1481855675892.png")

click("1481855675892.png")

wait("1481855716969.png")

click("1481855716969.png")

wait("1481855763519.png")

click("1481855763519.png")

wait("1481855820477.png")

click("1481855820477.png")

if exists("66.png"):   #断言
    print "测试通过"
    a.close()    #Sikuli关闭应用程序的方法
    #os.popen(command)    #python关闭应用程序的方法
else:
    print "测试失败"
    a.close()
    #os.popen(command)

运行试一下

Sikuli-X简单的使用_第6张图片

运行的时候有点慢,是因为是在整个屏幕上查找元素,可以使用,把查找元素的区域固定,使查找元素速度加快,当然也是有缺点的,程序如果改变区域就无法识别了,代码如下

import os
command = 'taskkill /im calc.exe'
#os.popen('calc.exe')
#openApp('calc.exe')

a = App.open("calc.exe") 

Region(596,325,220,315).wait("1481855580087.png")

Region(596,325,220,315).click("1481855580087.png")

Region(596,325,220,315).wait("1481855635062.png")

Region(596,325,220,315).click("1481855635062.png")

Region(596,325,220,315).wait("1481855675892.png")

Region(596,325,220,315).click("1481855675892.png")

Region(596,325,220,315).wait("1481855716969.png")

Region(596,325,220,315).click("1481855716969.png")

Region(596,325,220,315).wait("1481855763519.png")

Region(596,325,220,315).click("1481855763519.png")

Region(596,325,220,315).wait("1481855820477.png")

Region(596,325,220,315).click("1481855820477.png")

if Region(596,325,220,315).exists("66.png"):
    print "测试通过"
    a.close()
    #os.popen(command)    
else:
    print "测试失败"
    os.popen(command)


运行一下,比刚才快了很多

Sikuli-X简单的使用_第7张图片








你可能感兴趣的:(Sikuli-X)