您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 
   
 
 
     
   
 订阅
  捐助
图形脚本语言sikuli
 
作者:虫师 来自于:博客园 发布于 2016-3-3
   次浏览      
 

简介

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

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

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

什么是Sikuli?

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

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

谁正在开发的Sikuli脚本?

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

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

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编程实现可能会强大一些(还未调研)

   
次浏览       
 
相关文章

手机软件测试用例设计实践
手机客户端UI测试分析
iPhone消息推送机制实现与探讨
Android手机开发(一)
 
相关文档

Android_UI官方设计教程
手机开发平台介绍
android拍照及上传功能
Android讲义智能手机开发
相关课程

Android高级移动应用程序
Android系统开发
Android应用开发
手机软件测试
最新活动计划
LLM大模型应用与项目构建 12-26[特惠]
QT应用开发 11-21[线上]
C++高级编程 11-27[北京]
业务建模&领域驱动设计 11-15[北京]
用户研究与用户建模 11-21[北京]
SysML和EA进行系统设计建模 11-28[北京]

android人机界面指南
Android手机开发(一)
Android手机开发(二)
Android手机开发(三)
Android手机开发(四)
iPhone消息推送机制实现探讨
手机软件测试用例设计实践
手机客户端UI测试分析
手机软件自动化测试研究报告
更多...   

Android高级移动应用程序
Android应用开发
Android系统开发
手机软件测试
嵌入式软件测试
Android软、硬、云整合

领先IT公司 android开发平台最佳实践
北京 Android开发技术进阶
某新能源领域企业 Android开发技术
某航天公司 Android、IOS应用软件开发
阿尔卡特 Linux内核驱动
艾默生 嵌入式软件架构设计
西门子 嵌入式架构设计
更多...