基本简介
MIT的研究人员设计了一种新颖的图形脚本语言Sikuli,计算机用户只须有最基本的编程技能(比如会写print"hello world"),他不需要去写出一行行代码,而是用屏幕截图的方式,用截出来的图形元素组合出神奇的程序。利用 Sikuli,用户要使用其他的界面元素,或调用其他程序,不必输入代码,只需要插入相应的按钮或图标截图即可。据麻省理工的研究人员介绍,Sikuli的工作模式与人眼一样,直接识别图像,而不是底层代码,因此不会产生不兼容的问题。 Sikuli在墨西哥维乔印第安人(Huichol Indians)的语言里是上帝之眼的意思。所以称为"上帝之眼"。
Sikuli 脚本自动化技术,它使用图像识别技术,你在屏幕上看到的任何东西,识别和控制GUI 组件。这是有用的,当有一个GUI 的内部或源代码的访问是不容易的。
Sikuli 是一个开放源码的最初的用户界面设计组织在麻省理工学院的研究项目。现在是保持并进一步协调与开源社区开发的Sikuli 实验室在美国科罗拉多州博尔德大学。这是支持的,部分由国家科学基金会奖IIS-0447800,广达电脑的一部分的TParty 项目。Sikuli 的MIT 许可证下发布的。
该技术还可以用于进行大规模的程序测试。
使用该软件,截屏就会自动化!没错,你没有看错.算是个福音。
工作原理
以python为基础,需要搭建java运行环境

工具特点
优点:
1.与平台无关
可以实现任意类型的UI(GUI)测试,轻松实现跨平台测试,并可以解决Web测试中的浏览器兼容性测试问题。
2.可读性强
代码可读性强,用图形表示逻辑关系更生动、形象,容易理解,便于维护。
3.提供.jar包
便于构建大型的测试框架,实现各类测试工具之间的互补。
4.用例设计与程序实施可分离
用例设计人员可以只关注图型逻辑关系和测试检查点,不需要懂得具体开发与程序语言基础;程序实施人员可以只进行编程 而不 过多参与设计。
下载安装
1、 下载地址(鼠标点击)

2、安装
a.在D盘中建立了"上帝"文件夹,把刚刚下载的jar包剪切到这个文件夹下。

b.在这个文件空白处按住Shift键+鼠标右击.你会看到"在此处打开命令窗口"

c.输入以下命令java -jar xxx.jar(如图)

d.弹出的小窗口直接点"是",弹出的窗口全部如图




因为太多了,全部默认点"是",屏幕出现黄色部分,等待时间.出现小窗口就点击"是".一直到它消失为止。
e.到刚刚的"上帝"文件夹中,你会看到如图一样的情况.看见runsikulix.cmd这个bat脚本,双击它


界面介绍

屏幕截图(Take screenshot):点击该按钮,进入屏幕截图状态,拖拽辅助线选取需要截取的界面元素,释放鼠标左键的同时,自动将该截图插入到编辑区中光标当前位置。使用快捷键Ctrl+Shift+2 也可激活截图状态,以完成对于弹出菜单、下拉框一类的控件的实时截图。该快捷键亦可通过主菜
单File->Preferences 进行自定义。
插入图片:除直接截图外,用户也可通过点击该按钮插入已有的PNG 格式图片文件。
建立屏幕区域:点击该按钮,进入屏幕区域选择状态,拖拽定位十字线选取屏幕区域。释放鼠标左键,即可将当前选中区域的屏幕坐标信息插入到编辑区中。
运行:点击执行当前脚本。快捷键为Ctrl+R。
逐步运行:点击后以较慢的速度执行当前脚本,以红色圆形外框显式标识每一次图像查找定位动作,便于程序调试中进行焦点追踪。快捷键为Ctrl+Alt+R。
还有一些我也没有研究,所以这边不解释了.自己玩吧。
项目实例
1、截屏



2、Sikuli-X 可以完成常见的单击、右击、移动到、拖动等鼠标操作,但是缺点也很明显很难用在大规模自动化测试项目中应用,Java 同样可以使用Sikuli 进行自动化测试,它的主要方法被封装于sikuli-script.jar 包中,我们要找到该文件将其导入Eclipse 中即可。
下载Sikuli IDE 包:地址
将Sikuli IDE 解压得到如下目录:

将sikuli-script.jar 包添加到Eclipse 中。然后截取好脚本中要使用的截图

自动化脚本如下:
package com.sikuli.demo;
import org.sikuli.script.*;
public class UserSikuli {
public static void main(String[] args) throws FindFailed, InterruptedException
{
Screen s = new Screen();
String imgpath = "D:/java/sikuli/img/"; //定义图片存放路径
s.doubleClick(imgpath+"chrome.png"); //双击桌面chrome浏览器图标
s.type(imgpath+"url.png","www.bing.com"); // 输入url
s.click(imgpath+"lianxiang.png"); Thread.sleep(2000);
s.type(imgpath+"sreach_input.jpg","sikuli");
s.click(imgpath+"sreach_button.png"); //在bing输入框输入搜索关键字:Sikuli,并点击搜索按钮
System.out.println("end");
}
}


思路拓展
个人觉得sikuli完全可以结合selenium+java自动化使用.貌似刚刚百度了一下,思路完全是对的。这是一个很不错的消息.以后如果在自动化脚本中难以定位的,直接用sikuli就解决了。很棒的软件,但是很多地方还是不足的,比如两个颜色相近的软件,sikuli就无法识别了.期待能够完善升级。
网友评论