图形脚本语言sikuli

简介          
                                                                       
                                                                        
                                                                       
                                                            



 

Sikuli 是一种新颖的图形脚本语言,或者说是一种另类的自动化测试技术。它与我们常用的自动化测试技术(工具)有很大的区别。

 

当你看到上图sikuli的脚本时,一定会惊呼,这样都可以~!脚本加截图~~~

 

OK ,在惊讶过后,我们一起来大体的了解一下这个技术。

什么是Sikuli?

   Sikuli脚本自动化,你在屏幕上看到的任何东西。它使用图像识别,识别和控制GUI组件。这是有用的,当有一个GUI的内部或源代码的访问是不容易的。

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

谁正在开发的Sikuli脚本?

  Sikuli是一个开放源码的最初的用户界面设计组织  在麻省理工学院的研究项目  。现在是保持并进一步 协调与开
源社区开发的Sikuli实验室在美国科罗拉多州博尔德大学。这是支持的,部分由国家科学基金会奖IIS-0447800,广达电脑的一部分的
TParty项目。Sikuli 的MIT许可证下发布的  。

 

  好吧~!你觉得谷歌浏览器翻译的太烂(但对我这种E文件菜鸟来说知道意思就行),那么可以去官网看英文介绍:

http://www.sikuli.org/ 

 

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

 

下载安装



                                                   
                                                                        
                                              

 是否有兴趣与俺一起体验一下呢?

来下载页面看看http://www.sikuli.org/download.html 

好吧~!这货已经发生了不小的改变,去年玩的时候还是“单纯”的一下小软件。现在好像要求变多了。

Sikuli 告诉我们目前只有32位的版本,不过这个版本应该也可以运行在32位与64的windows系统下。但是,是有前提条件地:

 

  1、请确保你已经安装java 6 JRE 32位版本(如果是java 7 或者是64位JRE 那是不被支持的)

  2、请确定你已经卸载的先前的sikuli版本(尤其是0.10.x版本)

  3、请确保在你安装 JRE 或 卸载旧版本的sikuli 后已经重新启动了系统。

 

安装步骤

一、就在上面提供的下载页面,点击“ Sikuli X-1.0rc3(R905)-win32.exe”下载安装。程序很小,比起QTP 等工具,就可以直接忽视了。

 

我的安装路径:I:\Program Files (x86)\Sikuli X 

二、 安装完成后先不在不要运行,输因为他还有点小毛病,我们需要在下载页面找到“Sikuli X R930 ”连接,把这个zip类型的文件下载下来。

 

三、 我们将下载的文件sikuli-r930-win32.zip解压,然后得到一个SIKULI-IDE 的目录,把
SIKULI-IDE目录下的所有文件替换Sikuli X下的所有文件。(这种做法有点2了!)做这一步的目的是r930关联文件修复了了最近的
bug ,所以替换r905(有问题版本)文件关联。希望官方进快对下载版本修复,在你看到这篇文章再去下载安装时不用这么麻烦了。

 

 

界面介绍



                                                   
                                                                       
                                               

 上面已经安装完成,下面运行起来看看长相如何。

(注意窗口标题栏显示为“sikuli -r930”说明我们用的是替换版本)

 

菜单栏与工具栏非常简单,下面介绍一下这几个按钮是干嘛用的

 

   屏幕截图(Take screenshot):点击该按钮,进入屏幕截图状态,拖
拽辅助线选取需要截取的界面元素,释放鼠标左键的同时,自动将该截图插入到编辑区中光标当前位置。使用快捷
键 Ctrl+Shift+2(Command+Shift+2)也可激活截图状态,以完成对于弹出菜单、下拉框一类的控件的实时截图。该快捷键亦可通过
主菜单 File->Preferences 进行自定义。 

   插入图片(Insert image):除直接截图外,用户也可通过点击该按钮导入已有的 PNG 格式图片文件。 

   建立屏幕区域(Create region):点击该按钮,进入屏幕区域选择状态,拖拽定位十字线选取屏幕区域。释放鼠标左键,即可将当前选中区域的屏幕坐标信息插入到编辑区中。 

   运行(Run):点击执行当前脚本。快捷键为 Ctrl+R(Command+R)。 

    慢速运行(Run in slow motion):点击后以较慢的速度执行当前脚本,以红色圆形外框显式标识每一次图像查找定位动作,便于程序调试中进行焦点追踪。快捷键为 Ctrl+Alt+R(Command+Alt+R)。

 

  左侧侧边栏中分类列出了部分常用函数,点击函数名可快速将其插入到编辑区,若该函数需截图作为参数,则自动转入屏幕截图状态。下方的状态栏可用于查看当前行号,与行首 Tab 缩进的层级 ( 列号 )。 

  右边区域上半部分为脚本编辑区域,我们的自测化测试脚本就是在这个区域编写完成。

  下半部分为提示信息,不管运行成功与失败,都会给出相应的提示信息。

 

 

小例子



                                                                                        

   大体上了解sikuli 的界面,下面来做一个自动化的小例子。(官方的第一个小例子为开始运行里输入hello world )这里为打开360极速浏览器(默认为百度首页),搜索框里输入sikuli ,然后点击“百度一下”按钮搜索。

 第一步、点击桌面360极速浏览器图标。

 方法一,输入双击函数doubleClick(),然后通过截图工具对桌面图标截图,输入。

方法二很快捷,点击窗口左侧双击函数doubleClick(),直接进入截图状态。截图完成后直接添加函数到脚本编辑区域。

  

 第二步,我们依然用第二种快捷的方式,点击左侧type(图标,text) 函数,这次截取的对象为百度首页的输入框。

  

 因为,默认定位的焦点为图片的中心,我们要输入的位置在输入框的左侧,所以需要对焦点进行调整。直拉点击截图的输入框图片。

 

 

  当然,在这个窗口中,我们也可调整图片的匹配度,匹配度越低容错能力越强。这里来简单解释一下:

  大家知道ie7 与 ie8 的图标虽然相似,但还是有所差别的。为了使脚本的移植性更强。比如本机是用IE7 录制的
脚本,移植到另一台电脑上只有IE 8 ,因为精确度调低,脚本也会把IE8 当IE 7 来执行。当然有些情况下调低并不好,比如桌面上有两个图标非常
相识,那么精确度调整的很低,那么脚本就无法辨认谁是谁了。

 

第三步、这一步与第一步一样,不过这里要使用的函数是单击函数click() ,点击“百度一下”按钮。

 下面完整脚本:

 

   运行一下吧这个小脚本吧!成就感就此而生,这是你对这种技术产生兴趣的动力。。

 

 

优缺点  



                                                                                           

 了解一下这个工具的优缺点会让你更正确的使用这个工具

优点

 1、整体上sikuli小巧、便捷、容易上手。

2、sikuli脚本可以不经过API的编译器直接自动化搜索到任何你能在屏幕上看到的东西

3、对各种程序都适合

4、不存在标准控件和非标准控件的问题

5、相对位置概念较小,要求不高(但是对象本身尺寸有影响)

6、一次编码,多次运行(基于java的) 7、jython和java的支持,用编程的方式比较容易扩展

 

缺点 

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

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

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

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

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

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

7、ljw200901t和ljw200902t的区别(不太容易区别出来,可能需要调整到similarity=1.0才行,但这样的话可移植性就差了)

8、目前还不适合设计成一种测试框架(有用例组织功能,但是目前有bug,暂时没有用过)

9、测试报告的生成,直接用message的话比较弱,需要用jython编程实现可能会强大一些(还未调研)

 

 

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

时间: 2024-09-15 03:42:40

图形脚本语言sikuli的相关文章

关注web编程语言和脚本语言的就业趋势

八月是一个值得关注工作趋势的月份,今天,我们来重点关注web编程语言和脚本语言的就业趋势. 您可能很想知道我所指的"web编程语言和脚本语言"到底是什么?本文中我列举了Ruby.Python.PHP.JavaScript.Flex 以及 Groovy等编程语言.我在这里并没有提及Rails,是因为我想尽量将开发框架和开发语言区分开. 1. Indeed.com趋势分析图:(横坐标表示时间:纵坐标表示所匹配工作岗位的百分比) 同其它语言相比,JavaScript的需求量最大,但是在过去六

photoshop动作自动化脚本语言教程

自动化对每个设计师的工作来说是很有用的.它可以在重复的任务上节省宝贵的时间,还能够帮我们更快捷.更容易的解决一系列问题. 你可以使用photoshop的动作来使工作流程自动化,这是很流行的,大多数人都知道并且已经在使用的方法.今天,我们将介绍给你一种高级的自动化技巧:脚本语言.所有的这一切仅仅需要你有一点点关于JavaScript的基本知识,这对于我们中的一些网页设计师往往都是具备的. 我很多年前就知道Photoshop的脚本语言,但是我几个月前才开始决定研究它.我忽视了它是因为我认为那是聪明的

将PHP作为Shell脚本语言使用

脚本 本文出自:http://phpuser.com 作者: y10k翻译 (2002-10-15 06:02:00) --英文原著:Darrell Brogdon,发表于 http://www.phpbuilder.com/columns/darrell20000319.php3) 可能很多人都想过使用PHP编写一些定时发信之类的程序,但是却没有办法定时执行PHP:一次去PHPBuilder的时候,发现了这一篇文章,于是想给大家翻译一下(同时做了一些修改),希望对大家有用.第一次翻译文章,不好

将Delphi作为ASP.NET的脚本语言

asp.net|脚本    将Delphi视为脚本语言       支持ASP.net的第一件事是让ASP.NET将Delphi视为脚本语言,让ASP.NET能够为各种ASP文件类型调用Delphi的.NET编译器.       ASP.NET要在IIS虚路径的根目录下寻找Web.config文件.下面是ASP.NET中使用Delphi作脚本语言的web.config配制文件内容:       <configuration>    <system.web>    <compi

选择合适的java脚本语言

脚本 选择合适的java脚本语言--如果你正考虑在java应用中集成脚本解释器,最难得是决定使用那种 摘要:脚本语言已经向java开发者证明了它的价值.它让客户实现应用功能的扩展和界面的个性化,从而程序的价值得以提升.另外,它们可以显著的简化程序开发者的设计任务,通过实现动态定义.装载和评估.对于开发人员,集成一种或多种脚本语言的任务是简单的,从越来越长的可选列表中选出一个确实困难的.本文描述了一些伴随java应用中脚本语言支持的问题,并从不同角度比较了Groovy, JudoScript, P

用.net (在IIS中)创建虚拟目录(包括 脚本语言)

iis|创建|脚本|虚拟目录 两种语言在IIS中创建虚拟目录 用.net在IIS中创建虚拟目录 使用.NET的目录服务就可以访问IIS的设置,添加虚拟目录其实就是创建一个DirectoryEntry复杂的在于DirectoryEntry的属性,其实就是虚拟目的一些配置,比如,权限,是否要log,应用程序名等Properties非常多,而且文档不太好找详细可以参考MSDN以下内容help://MS.MSDNQTR.2004JUL.1033/iissdk/iis/configuring_proper

把PHP作为C#程序的脚本语言

当我们打算创建一个.net程序时(包括桌面程序或者Web应用程序),如果能使用其他语言来扩展这个.net程序的功能的话那肯定会相当有实用价值. 比如某些用户可以写一个简单脚本来设置这个程序的一些设定,或者在程序中修改数据是如何持久化保存的,或者为这个.net程序写一个简单的插件.在这篇文章,我们来看看如何让php作为.net程序的脚本语言 显然这样做有很多的好处: 1,很多程序员都会写一些基本的PHP代码,甚至一个初级程序员都能为你的应用写一个简单的PHP脚本代码 2, PHP是非常容易使用的,

ASP入门:认识ASP程序所使用的几种脚本语言

程序|脚本 在浏览器中通过查看源代码的方式是无法看到ASP源代码的,你只能看到由ASP文件输出的结果,而那些只是纯粹的HTML而已.这是因为,在结果被送回浏览器前,脚本已经在服务器执行了. 实例: 用ASP写文本 <html><body><%response.write("Hello World!")%></body></html> 向文本添加HTML <html><body><%response

解析asp的脚本语言

   在HTML语言里,标示一个标签是用尖括号,在ASP语言里其实没有什么不同,唯一的区别仅仅是使用<% %>来表示一个ASP的脚本语言的开始和结尾.ASP的代码可以出现在一个HTML页的任何位置.具体来讲,就是,一段ASP的代码可以出现来一个HTML的标签的前面,也可以出现在一个标签的里面.总之,ASP 和 HTML被紧紧地相互嵌套在了一起. 转自:动态网制作指南 www.knowsky.com当你在工作中使用数据库的时候,其实你完全可以通过一段HTML的代码,创造一个模版,然后把数据库中一