关于Sikuli GUI自动化工具的介绍(将屏幕上你见到的一切都自动化)——Sikuli教程#1

2014-10-09   出处: softwaretestinghelp  作/译者:Anitha Eswari/大头

与往常一样,我们试图为我们的读者引进新的东西来学。今天就让我们来探讨一个有趣的GUI自动化工具——Sikuli。


“自化你看到的一切”使用Sikuli形用界面(GUI)的自化工具——完整的新手引,通过这些深入解的Sikuli教程,迅速置并开始使用Sikuli脚本工具。


Sikuli使用图像识别方法来识别GUI元素,将你在屏幕上看到的一切自动化。Sikuli脚本允许用户使用屏幕截图来自动化GUI交互。

我们把这个系列分为两部分:

Sikuli教程#1——它如何工作,如何创建一个简单的Sikuli项目。

Sikuli教程#2——如何创建Sikuli Maven项目,如何使用Sikuli与Selenium WebDriver自动化网页。

先从本系列第1部分开始。


本教程中涉及:

  • Sikuli的简介
  • 实际用途
  • 优点
  • 先决条件
  • 创建一个Sikuli Java项目
  • 一些Sikuli方法
  • 示例
  • Sikuli的缺点

Sikuli是一个使用“视觉图像匹配”方法来自动化图形用户界面(GUI)的工具。在Sikuli中,所有的Web元素应被视为一个图像,并存储在项目中。Sikuli将基于对作为参数传递的图像进行视觉匹配触发GUI交互。

Sikuli对flash对象(不具有ID或名称)非常有用。它在有一个稳定的图形用户界面(例如,GUI组件不可变)的情况下是很有用的。

甚至基于窗口的应用程序也可以使用Sikuli自动化。 Sikuli提供非常友好Sikuli-script.jar,它可以方便地与Selenium web Driver一起使用。我们甚至可以使用Sikuli来自动化Adobe视频音频播放器或网站上的Flash游戏。通过使用简单的API,使得编程更容易。


实际用途

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

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

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

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

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

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

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


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

先决条件:

在开始之前,我们需要下载并安装以下软件:

  • 任何截图捕获工具(如DuckCapture,或qSnap
  • JDK
  • Eclipse(此链接为安装JDK和Eclipse的详细步骤)

Sikuli Java目的步

1Sikuli载——这里下载Sikuli。

2解压您已下载的zip文件。它将包含sikuli-script.jar文件。将该提取文件保存在本地文件系统中。

3打开Eclipse。

4创建一个Java项目文件——>新建——>Java项目

5

    1.右键单击项目

    2.去创建路径——>配置创建路径

    3.切换到Libraries选项卡

    4.点击“添加外部JAR”按钮,添加Sikuli-Script.jar到创建路径中。

    5.点击“确定”

Sikuli-script.jar,将被添加到您的项目的创建路径。你就大功告成了。现在你可以开始写这个项目里面Sikuli脚本。


一些Sikuli方法: 

#1建Screen类对

Screen是由Sikuli提供一个基类。我们需要首先创建该Screen类的对象,才可以访问所有Sikuli提供的方法。

法:

Screen s=new Screen();

#2单击一个元素

此方法用于点击屏幕上的特定图像。

法:

s.click(“<>”);

例如:

s.click(“test.png”);

3:右键单击一个元素

此方法用来右键点击屏幕上的特定图像。 

法:

s.rightClick(“<>”);

例如:

s.rightClick(“test.png”);

#4找元素

此方法用于查找屏幕上的特定元素存在。

法:

s.find(“<>”);

例如:

s.find(“test.png”);

 5:双一个元素

此方法用于触发屏幕上特定图像的双击事件

法:

s.doubleClick(“<>”);

例如:

s.doubleClick(“test.png”);

6检查元素是否在屏幕上

这个方法是用来检查指定的元素是否存在于屏幕上。

法:

s.exists(“<>”);

例如:

s.exists(“test.png”);

7:在文本框入一个字符串

这种方法是用来在文本框输入指定的文本。

法:

s.type(“<>”,”String to be typed”);

例如:

s.type(“test.png”,“HI!!”);

8:旋指定的

这个方法是用来对图形元素进行旋转操作。

法:

s.wheel(“<>”,<>,<>);

例如:

s.wheel(“test.png”,25,0);

 9:拖放

这个方法是用来将图片从源位置拖放到目标位置的。

法:

s.dragDrop(“<>”,”<>”);

例如:

s.dragDrop(“test.png”,“test1.png”);

10:特定像的滚动标悬

这个方法是用来对特定图像进行滚动悬停事件。

法:

s.hover(“<>”);

例如:

s.hover(“test.png”);

11:粘复制的字符串

这个方法用来在指定的文本框中粘贴文本。

法:

s.paste(“<>”,”test”);

例如:

s.paste(“test.png”,“测试”);

Sikuli1YouTube影片——停和播放视频

1

打开YouTube视频链接,并使用屏幕捕获工具捕获播放和暂停元素的图像。

-------------------

暂停按钮(注意:文件名pause.png)

播放按钮(注意:文件名play.png)

复制这些图片到你的项目中。

2

在Sikuli的Java项目中创建package并创建一个名为“YouTube”的类。

3

在类中输入下面的代码。
package com.test;
 
import org.sikuli.script.FindFailed;
 import org.sikuli.script.Screen;
 
public class Youtube {
 
public static void main(String[] args) throws FindFailed, InterruptedException {
 // TODO Auto-generated method stub
 
Screen s=new Screen();
 s.find("pause.png"); //identify pause button
 s.click("pause.png"); //click pause button
 System.out.println("pause button clicked");
 
s.find("play.png"); //identify play button
 s.click("play.png"); //click play button
 }
 
}

4

右键单击类选择Run As——>Java应用程序。


Sikuli2:打开事本,入一些文字

1

捕获屏幕上的桌面记事本图标。

notepad_icon.png

notepad.png

2

复制这些图片到你的项目中。

#3

在项目中创建一个名为“NotepadExample”的类,然后输入下面的代码。
package com.test;
 
import org.sikuli.script.FindFailed;
 import org.sikuli.script.Screen;
 
public class NotepadExample {
 
public static void main(String[] args) throws FindFailed {
 // TODO Auto-generated method stub
 
Screen s=new Screen();
 s.click("notepad_icon.png");
 s.find("notepad.png");
 s.type("notepad.png","This is Nice Sikuli Tutorial!!!!");
 }
 
}

4

执行代码之前打开需要进行测试的屏。

右键单击选择Run As——>Java应用程序来执行此文件。


Sikuli3:拖放

1

通过屏幕截图截取屏幕上所需的项目,并将其放入sikuli项目中。

[注:下载图标“source.png”和花的图片“destination.png”]

#2

把这些图片放入你的项目中。

#3

以“DragAndDrop”为名创建一个类,并写入以下代码。
package com.test;
 
import org.sikuli.script.FindFailed;
 import org.sikuli.script.Screen;
 
public class DragAndDrop {
 
public static void main(String[] args) throws FindFailed, InterruptedException {
 // TODO Auto-generated method stub
 Screen s=new Screen();
 s.find("source.png");
 System.out.println("Source image found");
 s.find("target.png");
 System.out.println("target image found");
 s.dragDrop("source.png", "target.png");
 }
 
}

4

右键单击选择Run As——>Java应用程序来执行此脚本。

执行该脚本后,下载的图标将被拖放到图像上,显示为目标。

执行前:

执行后:

个工具的缺点

  • 我们不能保证图像匹配的将是永远准确的。有时,如果屏幕上有两个或更多类似的图像,Sikuli将可能选择错误的图像。
  • 如果图像在像素尺寸方面有所变化,也可能导致“查找失败”的异常。
  • 过多的截图带来的开销。
  • 如截图中的任何一个缺失,会影响程序的执行。

更多的源:

  • 简单Sikuli例子在这里
  • 更多视频教程在这里
  • 详细Sikuli文档在这里

结论

Sikuli在自动化Flash对象方面非常有用。它可以被用来自动化基于窗口的应用程序。这是个基于可视化屏幕上显示的元素,并对其进行处理的极好的工具。

关于作者:这是一个由Anitha Eswari所著的博文。目前她正从事高级测试工程师,具有关于手动和自动测试以及各种测试管理工具的丰富的知识。


下一篇教程:在本系列的下一个部分,让我们深入看看如何创建Sikuli Maven项目以及如何将Sikuli与Selenium相整合。

已经使用过这个工具?那请分享你的经验和技巧。如果你想开始学习,但仍有疑问的话请让我们知道。

(待续)

【英文原文:http://www.softwaretestinghelp.com/sikuli-tutorial-part-1/

{测试窝原创译文,译者:大头}

译者简介:

大头,在读日本九州大学修士,计算机专业,主研究方向为文本挖掘,及自然语言处理。


声明:本文为本站编辑转载,文章版权归原作者所有。文章内容为作者个人观点,本站只提供转载参考(依行业惯例严格标明出处和作译者),目的在于传递更多专业信息,普惠测试相关从业者,开源分享,推动行业交流和进步。 如涉及作品内容、版权和其它问题,请原作者及时与本站联系(QQ:1017718740),我们将第一时间进行处理。本站拥有对此声明的最终解释权!欢迎大家通过新浪微博(@测试窝)或微信公众号(测试窝)关注我们,与我们的编辑和其他窝友交流。
4919° /49193 人阅读/0 条评论 发表评论

登录 后发表评论