sikuli自动化测试环境搭建和demo

sikuli自动化测试环境搭建和demo官方文档 http doc sikuli org globals htmlhttp sikulix 2014 readthedocs io en latest index htmlSikuli nbsp 是一种新颖的图形脚本语言 或者说是一种另类的自动化测试技术 它与我们常用的自动化测试技术 工具 有很大的区别 nbsp 当你看到上图 sikuli 的脚本时 一定会惊呼 这样都可

官方文档:http://doc.sikuli.org/globals.html

http://sikulix-2014.readthedocs.io/en/latest/index.html

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

 sikuli自动化测试环境搭建和demo

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

 

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

什么是Sikuli?

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

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

谁正在开发的Sikuli脚本?

  Sikuli是一个开放源码的最初的用户界面设计组织  在麻省理工学院的研究项目  。现在是保持并进一步 协调与开源社区开发的Sikuli实验室在美国科罗拉多州博尔德大学。这是支持的,部分由国家科学基金会奖IIS-0,广达电脑的一部分的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 等工具,就可以直接忽视了。

 sikuli自动化测试环境搭建和demo

我的安装路径: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自动化测试环境搭建和demo

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

 

sikuli自动化测试环境搭建和demo

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

 

   屏幕截图(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)。

 

sikuli自动化测试环境搭建和demo

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

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

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

 

 

小例子


                                                                                        

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

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

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

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

  sikuli自动化测试环境搭建和demo

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

  sikuli自动化测试环境搭建和demo

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

 sikuli自动化测试环境搭建和demo

 

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

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

sikuli自动化测试环境搭建和demo

 

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

 下面完整脚本:

sikuli自动化测试环境搭建和demo

 

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

 

 

优缺点  


                                                                                           

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

优点

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

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

3、对各种程序都适合

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

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

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

 

缺点 

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

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

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

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

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

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

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

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

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

sikuli常用函数:

1findAll(图片)

sikuli自动化测试环境搭建和demo

典型例子:Uncheck AllCheckboxes

2、点击操作

click(x)

左键点击元素x

rightClick(x)

右键点击元素x

3below()

sikuli自动化测试环境搭建和demo

sikuli自动化测试环境搭建和demo

4dragDrop()

This function takes two images asarguments. The first image describes the source GUI object to drag and thesecond image describes the appearance of the destination location where the GUIobject should be dragged to and dropped.

sikuli自动化测试环境搭建和demo


典型例子:Working with Sliders

5right()

表示在右边

sikuli自动化测试环境搭建和demo

6popup(string)

弹出一个提示框
例:
popup("Obama has updated his message")
运行:

sikuli自动化测试环境搭建和demo

7、键盘操作:

sikuli自动化测试环境搭建和demo

8Resizinga Window

This tutorial demonstrates how to use Sikuli script to resize a window by dragging its bottom-right corner.  In order to do so, you have to evaluate the current position of this corner on the screen, move the mouse pointer to the applicable click point and then perform one or more drag actions.

sikuli自动化测试环境搭建和demo

9、表示方位的词:

Nearby(number)、above()、below()、left()、right()、getCenter()

10、位置偏移

Location(t.x-30,t.y+30)

其实用图形法会方便和舒服:点击图片,进入设置界面,点击偏移选项卡,然后可以用鼠标设置偏移量,点到哪就偏移到哪,如果想偏移到更远的地方,就滚动鼠标滑轮,可以放大缩小页面,选择偏移点。

11、屏幕翻页

sikuli自动化测试环境搭建和demo

其他键盘操作类型参数见Key (built-in class)


12、读写文件(其实就是python的语法)

#打开 写文件

f=open(‘c:/wy.txt’,’a’)

t=”hello\n”

f . write(t)

f.close()

 

#打开 读文件

f=open(‘c:/wy.txt’,’r’)

t=f.read()

popup(t)

#open(路径+文件名,读写模式)

#读写模式:r只读,r+读写,w新建(会覆盖原有文件),a追加,b二进制文件.常用模式

13input(“字符串”)

显示一个输入框,以供输入。要输入中文应该在前面加u

input(u“字符串”),不然会乱码

14if语句

If 条件 and 条件:#(注意有冒号,‘#’号表示注释)

       语句

15openApp(应用程序路径名)    

打开应用程序,注意应用程序的路径名里的斜杠“\”要改为双斜杠“\\”。

16、复制、粘贴操作

type(“c”,KEY_CTRL)  #复制

type(“v”,KEY_CTRL)  #粘贴

17waitVanish(“907.png”,300)

waitVanish()最好带时间,不然还没消失就返回消失的信息了。

我觉得用下面的代替好些

while exists(“image.png”):
     wait(1)   

#ifthe image exist it will wait until the image disappear

18sikuli输入中文

input(u”请输入想要获取并下载多少个页面的App资源:”)

popup(u”chinese”)

在前面加‘u’避免乱码,‘u’是unicode还是utf8,我就不清楚了。

19、设定循环次数

for x inrange(10): #循环10次,x不用预先定义

       循环体

20、编程小经验

1、用sikuli编程的时候,最好是保存为可执行文件来测试,因为有些功能直接测试是测试不出来的,比如type(“c”,KEY_CTRL)  #复制,直接运行测试(好像)是无效的,当时我还困惑了很久。后来无意中保存为可执行文件后才发现是可以的。

 

2、用sikuli编程时,多用wait()语句,因为很多时候没有给它一定的识别时间,就容易出错。

还有的就是,进行复制粘贴操作时,如果需要切换到另外一个页面粘贴,再切回来,如果中间不wait一段时间,等粘贴完成,很可能就没有粘贴成功。


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/229373.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午4:51
下一篇 2026年3月16日 下午4:52


相关推荐

  • 如何安装GCC

    如何安装GCC现在的CentOs8上没有自带的gcc编译器因此需要下载(注意:这里的下载是指在虚拟机中下载,不是指在电脑上下载)若运行gcc时出现appstream下载元数据失败则表明没有安装gcc。1首先需要获得root权限****在终端模式下输入su,按下回车输入密码即可(注意这里的输入密码无显示)2检查虚拟机是否联网(当然要先确保电脑已联网)3检查网络是否正常输入pingwww….

    2022年5月9日
    346
  • 矩阵乘法复杂度分析

    矩阵乘法复杂度分析一背景在很多机器学习或者数据挖掘论文中 里面或多或少的涉及到算法复杂度分析 进一步思考 是如何得到的呢 很长时间里 我也感受到比较疑惑 阅读论文过程中 在涉及到这部分内容时 会直接跳过算法复杂度分析这快 其一是因为比较烧脑 虽然知道复杂度分析是对算法总体上的概况 用来进行算法间好坏的比较 由此可见 作要性 其二是算法分析基础比较薄弱 个人主观上也是不想的 算法复杂度在 数据结构 课程中也或多或少的涉猎 说完全不知道属于自己骗自己 简单的一些例子还是会分析的 但当涉及到复杂的目标方程

    2026年3月16日
    3
  • html简单登录页面代码「建议收藏」

    html简单登录页面代码「建议收藏」图片必须是在Imges下的否则显示不出来(复制代码的话把图片换成你的图片就好了)代码如下<html><head><title>tes

    2022年6月13日
    36
  • AI工具实战指南:从文心一言到Midjourney v5的进阶之路

    AI工具实战指南:从文心一言到Midjourney v5的进阶之路

    2026年3月15日
    1
  • ed2k链接网站

    ed2k链接网站 http://ed2k.shortypower.org/  查源站 http://donkey4u.com/   查源站 http://verycd.gdajie.com/ http://www.iverycd.com/ http://www.qvocd.org/ http://www.simplecd.me/ http://www.ed2kers.com/ http://www.icili….

    2022年7月15日
    21
  • OpenClaw 接入飞书机器人:脚本部署与自动化实战指南

    OpenClaw 接入飞书机器人:脚本部署与自动化实战指南

    2026年3月15日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号