Sikuli -web页面自动化测试工具

简介

Sikuli(在墨西哥维乔印第安人的语言里是”上帝之眼”的意思)是由美国麻省理工学院开发的一种最新编程技术,使得编程人员可以使用截图替代代码,从而简化代码的编写流程。从它研究方向上看,是一种编程技术,但是该技术还可以用于进行大规模的程序测试,脚本程序编写使用的是python语言不需要去写出一行行代码,而是用 屏幕截图的方式,用截出来的图形元素组合出神奇的程序。

Sikuli 可以采用Python 来做为脚本语言, 当然,你如果熟悉Python 的话,相信你对sikuli 的上手非常快。当然,你也可以使用sikuli的java API 使其在java 环境下运行。

一句话概括:会截图,就会自动化。 借助MIT的sukuli开源项目,我们能很容易的实现会截图就会自动化测试。

  Sikuli是一种使用截图进行UI自动化测试的技术。Sikuli包括sikul脚本,基于Jython的API以及sikuli IDE。Sikuli可以实现任何你可以在显示器上看到ui对象的自动化,你可以通过编写一些代码来实现web 页面,window/linux/Mac OS X桌面应用、甚至是iphoneandroid模拟器的自动化测试。Sikuli提供非常友好Sikuli-script.jar,它可以方便地与Selenium web Driver一起使用。

场景

当有一个GUI的内部或源代码的访问是不容易的。

1.Sikuli可以用来自动化Flash对象或Flash网站。

2.它可以运用于自动化基于窗口的应用程序。我们可以自动化我们在屏幕上所看到的。

3.它提供了简单的API,即所有的方法都可以使用屏幕类对象进行访问。

4.它可以简单地与Selenium和所有其他工具集成。

5.使用Sikuli我们可以自动化桌面应用程序。

6.大多数的自动化测试工具不支持flash对象自动化(如Selenium)。Sikuli为自动化Flash对象提供了广泛的支持。

7.它采用强大的“视觉匹配”机制来自动化桌面和Flash对象


特点

1 编程非常简单,会截图就会编程

2 对象识别能力强,

3 开源,支持windows

优点

  • 开源工具。
  • 一个Sikuli的最大优势在于,它可以轻松地自动化Flash对象。
  • 它使自动化Windows应用程序易于实现。
  • 当你测试正在开发的一个应用程序,你不知道的元素的ID/名称,那么你可以用Sikuli。它将检查图像的外观,如果发现匹配,将相应的与图像进行交互

缺点

1、图片的分辨率、色彩、尺寸、唯一性对程序的影响 (如果有两个相同的,无法区分具体哪一个)


2、sikuli本身还不完善(处于开发、升级阶段) 还有很多程序bug,能否继续发展还是未知数


3、只认识当前活动的图标(只有当前桌面有才行)


4、用例组织方面有提供但是目前有bug,还未调研尝试便利性


5、截图的话,脚本存储占用空间较大


6、相似度调整需要手动一个个的调整,工作量大

注意

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

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

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

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


java中使用sikuli进行自动化测试

sikuli IDE可以完成常见的单击、右击、移动到、拖动等鼠标操作,java引用sikuli-script.jar同样可以执行这些常见的鼠标操作,因此即可方便的编写java实现识别图片并模拟点击/拖动目标控件。
参考:
http://www.testwo.com/article/299

方法

命令 描述
创建Screen类对象
Screen s=new Screen();

Screen是由Sikuli提供一个基类。我们需要首先创建该Screen类的对象,

才可以访问所有Sikuli提供的方法。

语法:

Screen s=new Screen();

单击一个元素
s.click(“test.png”);
此方法用于点击屏幕上的特定图像。
右键单击一个元素
s.rightClick(“test.png”);
此方法用来右键点击屏幕上的特定图像。
查找元素
s.find(“test.png”);
用于查找屏幕上的特定元素存在
双击一个元素
s.doubleClick(“test.png”);
用于触发屏幕上特定图像的双击事件
s.exists(“test.png”); 检查元素是否在屏幕上显示
s.type(“test.png”,“HI!!”); 在文本框输入一个字符串
s.wheel(“test.png”,25,0); 旋转指定的图像
s.dragDrop(“test.png”,“test1.png”); 图片从源位置拖放到目标位置的
s.hover(“test.png”); 对特定图像进行滚动悬停事件
s.paste(“test.png”,“测试”); 在指定的文本框中粘贴文本
   
   
   
   
   
   
   
   

例子

安装?:http://www.sikuli.org/downloadrc3.html

http://www.testwo.com/article/299

http://www.testwo.com/article/304

参考

http://djt.qq.com/article/view/124

你可能感兴趣的:(【测试】自动化测试,【技术】手机m站,【测试】工具)