sikulix document 学习笔记(二)——SikuliX是怎么运行的

2. SikuliX是怎么运行的

2.1基础知识

2.1.1使工作流程自动化、可视化

我们每天在电脑上做的一些事情,比如下面的一个流程:

      1,想要看papi酱不定期更新的日常

2,选择一个应用程序(比如爱奇艺客户端)

      3,双击爱奇艺客户端的快捷方式,打开软件

      4,在搜索框里输入“Papi酱”

      5,等待搜索结果

      6,点击视频链接

      7,等待进入视频播放页面

      8,点击……

      9,等待……

我们把上面这些称为“可视化流程(visual workflow)”

 

有一些类似的流程我们每天或多或少都会重复(尤其是对于一些软件测试人员),而且我们也曾问过自己:这些操作可以自动运行吗?

 

目前自动处理这类操作的软件主要有三大类,他们分别是:

Recorder 利用记录器记录手动操作的步骤,记录完毕之后,就可以利用回放来执行自动操作。

GUI aware 利用编程的方式操作GUI元素,比如按钮。有的也带有Recorder特性。

 

Visually 通过“看”屏幕上的图像,模拟键盘和鼠标的动作来操作。也有一些Recorder特性。

 

SikuliX 属于第三种(目前还不能实现录制功能):当你执行某些操作流程的时候,把你需要操作的地方(点击、输入等)截图,告诉SikuliX你在这些图片上的操作,之后它就可以自己执行了。

 

SikuliX是所见即所得的脚本语言。

 

那么找papi酱我们可以这样操作了:

 

      openApp(“爱奇艺.exe软件的位置”)

      click(搜索框.png)

      type(“papi酱不定期更新的日常”)

      wait(“搜索结果列表”)

      click(“某一条视频的链接”)

      ……

2.1.2SikuliX可以用来做可视化测试

 

在软件测试中,可以利用SikuliX执行可视化的测试。

 

可以结合GUI aware软件(比如Selenium)使用。

 

由于SikuliX基于截图的像素来识别特定的按钮、文本、图像、链接等,在不同系统中像素的色彩可能有差别,所以可能出现在一台电脑上制作的脚本在另一台电脑上或系统里无法使用。

 

SikuliX要求被操作的软件在真实的屏幕上运行,或者至少在类似的虚拟屏幕上。

 

SikuliX要求电脑必须安装Java version 6+

 

2.1.3SikuliX是怎样在屏幕上找到图像的

 

SikuliX通过OpenVC引擎的matchTemplate()函数识别图像。

 

等待图像在在指定的区域出现:

#屏幕的左上部分

aRegion = Region(0,0,500,500)

#一张要在指定区域里查找的png图像

aImage = “someImage.png”

#查找图像并获得结果

aMatch = aRegion.find(aImage)

 

为了便于理解,我们先不讨论怎么得到aImag.png。

 

简单理解就是,先截一张当前屏幕作为底图(base),在这张底图上查找我们要找的图像(target)。具体查找的方法就是把base和target都放入内存,利用一定的算法处理图片,得到图像的像素矩阵,通过一定的算法比对。

 

默认情况下相似的默认为0.7(相似度可以设置为0到1,数值越大,识别阈值越高)。

 

底图像素越大,查找的时间越长,像素越小,查找的时间越短。

 

SikuliX 的still-there特性:在查找指定区域之前,先检测目标图像在上一次查找的时候是否出现,并且还存在于原来的位置,这样就可以减少这一次查找所耗费的时间。

 

如果目标图像(target)在指定区域的多个地方存在,而且我们想要循环的查找出每一个出现的位置,我们可以用findAll()函数,该函数返回一个列表。

 

2.1.4图像处理

 

SikuliX脚本中使用到的图像需要是png格式的,这些图像可以是保存在本地文件夹里的,也可以是保存在网络上的。

 

这里的图像指的是在屏幕上截取的像素截图,利用SikuliX自带的截图功能截取的图片默认保存在C盘的文件夹里(win7在C:\Users\BIRD_WIN7\AppData\Local\Temp文件夹里面以Sikuli—命名的文件夹)。

 

截取图片时可以使用SikuliX IDE自带的截图功能,也可以使用其他的截图工具(保存成png格式)。

 

为了保证能够顺利的把截图导入到SikuliX中,需要遵循以下两点:

 

1,bundle path 截取的图片和SikuliX的脚本文件(Python脚本的后缀是.py,Ruby的后缀是.rb,JavaScript的后缀是.js)保存在.sikuli命名的文件夹中。这些文件、文件夹都是有SikuliX IDE自动命名的。

 

2,image path 此外,SikuliX还支持其他的一些图像文件路径。比如文件系统中的文件夹、jar_file文件中的文件夹和网络文件夹,可以设置自定义的文件路径。

 

强烈建议制定自己的命名规则来给这些图像文件命名,尽量避免使用SikuliX自带的以时间戳自动命名的方式,除非你是初学者。

 

Version 2版本里将会有一个单独的截图软件,支持以下的图像处理方式:

1,像屏幕录像一样在操作的同时捕获屏幕截图

2,管理图像文件路径

3,组织一系列的“相同的”图像,可以依据系统环境不同相互转换

4,把相关的一些图像组织在一起

5,处理图片的不同状态(比如选中状态/未选中状态)

6,优化处理截图,使之更精确

7,透明度的支持(比如处理按钮图像时忽略按钮的内部)


 

2.2 SikuliX—system specifics 系统特点

2.2.1 基本方面

SikuliX主要的一个特性是可以无差异的在Windows、Linux和Mac系统上运行。但是在version 2 版本里,将会通过插件来扩充功能,这些插件并不是所有系统都通用的。

 

因为SikuliX是基于Java的,所以具有良好的可移植性和通用性。也正是因为基于Java,SikuliX脚本通常被打包成jar文件(目前只能在Mac电脑上运行),在version2版本里将能够打包成windows可以运行的exe程序。

为了能够成功的运行SikuliX,需要确保电脑安装了6.0版本以上的JRE环境,如果是version2版本的话,则至少要保证JRE在7.0版本以上。

 

在version1.1+版本里,还有一些核心组件是用C++编写的。

SikuliXAPPData包含以下内容:

Extensions(place for extensions/Plugins)

Lib(the stuff to support Jython/JRuby usage)

SikulixDownloads(non SikuliX artefacts like Jython, JRuby, Tesseract support, ...)

SikulixDownloads_TIMESTAMP(versioned SikuliX stuff needed for setup)

SikulixLibs_TIMESTAMP(the place for the exported native libraries)

SikulixSetup(optional: used when the setup is run from the project context)

SikulixStore(place for persistent or optional information)

SikulixTesseract(place for language specific tessdatafiles)

 

以上这些AppData目前我们还不用去过多的关注,通常在调试的时候才回去看这些文件。

 

SikuliX不用额外设置任何的环境变量就能够正常的使用。

 

2.2.2在windows系统中使用

SikuliX IDE在1.10版本中还只能作为jar-file开始用,通过双击可以启动IDE程序。

安装的时候在安装路径下生成一个runsikulix.cmd文件,用来启动SikuliXIDE或者脚本文件。

在version2版本里可以基于Launch4J启动exe程序。

SikuliXAppData保存在环境变量%APPDATA%指向的路径。

 

除了Java环境,没有其他需要配置的。所有本地的库文件都被打包在jar-files里面。

2.2.3在Mac系统上

安装之后可以通过Sikulix.app启动IDE。

另外还可以通过命令脚本runsikulix在控制台(Terminal)终端运行脚本

SikuliXAppData保存在~/Library/Application Support/Sikulix中

除了Java环境,不用进行其他设置。

 

2.2.4 在Linux上

IDE只能作为jar-files来使用,通过双击打开软件。

安装程序生成一个runsikulix命令脚本,可以用来在命令控制台打开IDE或者运行脚本。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值