Sikuli入门

Sikuli的介绍

在日常工作中可能会涉及大量的重复的点击鼠标的工作,例如将excel表格数据填入网页表格中。采用编程的手段,如使用python中selenium库来实现读取excel表格,然后通过网页XPath,从而实现基于web的自动化测试,能够满足我们的要求。但是对于一些网页是采用swf形式,即一种Flash文件时,则使用selenium就一时无从下手。这时,我们可以借助一种基于图形化的自动化测试工具Sikuli来达到我们的要去。接下来,通过翻译Sikuli Script - Home来帮助您对该工具有初步认识。然后我将介绍该工具的安装,并翻译官方文档中Hello World (Windows) — Sikuli X 1.0 documentation来帮助您入门。

为什么?

Sikuli自动化你在屏幕中看到的任何东西。它使用图像识别来识别和控制GUI组件。当不能轻松的访问GUI内部或源代码时非常有用。

谁在开发Sikuli?

Sikuli是麻省理工学院用户界面设计组的一个开源研究项目。

Sikuli软件包现在由Raimund Hocke(aka RaiMan)开源社区一起维护和进一步开发。

Sikuli幻灯片科罗拉多大学博尔德分校Sikuli实验室开发。部分由国家科学基金会(IIS-0447800)和广达电脑(Quanta Computer)支持,作为TParty项目的一部分。

Sikuli和SikuliX软件包是根据MIT许可证发布的。

我如何学习和使用Sikuli?

该部分翻译自官方文档Sikuli Script主页

为了获得对Sikuli的第一印象,Hello World Example是一个很好的起点。您可以继续按照教程 视频中的示例进行操作。您可以通过阅读文档来了解SikuliX的大部分内容。SikuliX目前使用python作为脚本语言。想了解更多,从这里开始[How to](get deeper into Python language](https://answers.launchpad.net/sikuli/+faq/1858)。Sikuli-IDE(版本为1.1.0的JRuby以及更多的脚本语言)很好地支持Python脚本。你可以在Java程序中像使用Sikuli的功能,也可以Sikuli API以及许多其他支持的Jave的脚本语言和环境(更多信息:从这里开始)。

对于Sikuli Slides,你可以在主页上找到所需的一切。

我怎样才能得到支持?

支持SikuliX:Homepage, FAQs, Questions/Answers and Bugs/Feature Requests。 支持SikuliX Slides:Homepage

如果您有任何建议或你想要贡献的话,请随意联系开发人员和社区。

Sikuli IDE的安装

安装java环境

在Windows平台下,要求有Java6的运行环境,且是32位的版本。因此,先从下载32位版本的Java6(JRE)

安装Sikuli IDE

官方中,下载合适的Windows版本的Sikuli IDE,下载完成后,直接运行安装程序即可安装完成。

Hellow World(Windows)

该部分翻译自官方文档Hello World (Windows)¶

让我们从一个习惯的Hello World示例开始!

你将学习如何捕捉GUI元素的屏幕截图,并编写一个Sikuli Script来做这两件事:

  • 1.点击元素
  • 2.在该元素上输入字符串

Hello World脚本的目标是在开始菜单的搜索框中自动化键入”Hello World”,像这样:

start-goal

现在,打开Sikuli IDE,我们从我们的目标截图开始,开始菜单符号通常位于桌面左下角。使用这个截图,我们可以告诉Sikuli脚本点击什么。

要模拟鼠标点击开始符号,我们使用click函数。为了告诉Sikuli开始符号是怎么样的,我们需要在屏幕上捕捉它的图像。

Sikuli IDE提供了种捕捉屏幕图像的方法。第一种方式是点击工具栏中的相机按钮。这将使您进入屏幕捕捉模式。

toolbar_camera

第二种方法是按热键(Ctrl+Shift+2)。通常情况下,你希望拍摄的图像的目标可能被Sikuli IDE的窗口覆盖。你可以最小化IDE的窗口并使用此热键切换到捕捉模式。

在屏幕捕捉模式,屏幕会看起来比较暗,并暂时冻结。整个桌面变得像一个帆布,你可以在想要捕捉图像的目标周围绘制一个矩形。在这种情况下,目标是开始符号。红色虚线的十字显示了你刚绘制的矩形的中心。

start-capture

在绘制(或选择)矩形之后,矩形内的图像将被捕捉并被插入到当前光标位置的脚本编辑器中。

start-inserted

现在,你可以使用该图像作为一个参数来告诉Sikuli点击开始标识编写click函数。

start-click

为方便起见,Sikuli IDE在左侧面板提供了命令列表。它显示了最常用的函数。函数中的相机图标表示这些函数期望捕捉的图像作为参数。

IDE-commandlist

在列表中定位click()函数并点击它。如果Auto Capture处于打开状态(默认),则您将引导至屏幕捕捉模式,在这种模式下,您可以捕捉要作为参数插入click()函数的接口目标的图像。

下一步是告诉Sikuli在搜索框输入字符串”Hello World”,你可以使用一个简单的type函数来完成。

start-type

这个函数会将参数中给出的字符串输入到具有焦点的输入控件中。点击开始符号后,我们可以预期搜索框将成为焦点的输入。

恭喜!你刚刚完成了你的第一个Scikuli脚本。按下按钮,可以看到这个脚本在运行。

不足

该款工具也有一些缺陷,例如跨平台,更换不同分辨了电脑或浏览器后,原先有截图脚本无法正常运行。

其他资源