1.SikuliX基本介绍      

         Sikuli 是 2009 年由 Tsung-Hsiang Chang 和 Tom Yeh在麻省理工学院用户界面设计小组的一个开源研究项目。1 年,两人都离开了 Sikuli-X-0.3rc2012 的项目,RaiMan决定接管开发和支持,并将其命名为 SikuliX
        SikuliX 可以自动执行运行在 Windows、Mac 或某些 Linux/Unix 的台式计算机屏幕上看到的任何内容。它使用由 OpenCV 提供支持的图像识别来识别 GUI 组件。当无法轻松访问 GUI 的内部或要操作的应用程序或网页的源代码时,这很方便。SikuliX还可以运行鼠标和键盘来与识别的GUI元素进行交互。这适用于多显示器环境,甚至适用于具有某些限制的远程系统。
SikuliX 支持作为脚本语言

  • Python 语言级别 2.7(由 Jython 支持)
  • 支持运行 RobotFramework 文本脚本(参见文档)
  • Ruby 语言级别 1.9 和 2.0(由 JRuby 支持)
  • JavaScript(受 Java 脚本引擎支持)

2.SikuliX下载及使用

        SikuliX是基于java开发的,目前下载程序也是一个jar包,可以通过官网地址下载

运行SikuliX的电脑上必须要有一个64位的java jdk安装,SikuliX本身提供两种使用方式:

1.基于IDE的脚本编写方式

         双击jar文件启动或命令窗口中通过java -jar <path-to>/sikulix.jar启动;

        SikuliX提供IDE界面,如下图所示,你可以在IDE里使用SikuliX提供的方法来编写脚本,保存后生成.sikuli格式的脚本,可直接在IDE里运行。

2.编程方式

        在成熟的IDE里,如Eclipse,Pycharm等或在python,java等编程环境中,将SikuliX提供的API集成未功能库,或引入其提供的API库来直接编写自动化程序。

3.开始编写第一个程序

使用IDE方式实现hello world脚本:在“开始”菜单搜索框中自动键入Hello World”,实现效果如下图所示:

要开始编写脚本,首先截取目标的屏幕截图,SikuliX IDE提供两种捕获目标图片的方式。第一种是单机工具栏中的相图案,第二种是使用热键(Ctrl+Shift+2)

屏幕捕获模式下,屏幕看起来会变暗并暂时冻结。 整个桌面变得像一个画布,您可以在其中绘制一个矩形圈住要捕获其图像的目标。在本例中,目标是“搜索”符号。红色虚线的十字表示您刚才的矩形的中心

本例子中我们使用click函数实现单击功能,使用type函数实现文本输入,具体的脚本如下所示:

运行报错了,猜测执行完语句1后,对应的输入框还未找到,此时语句2已经开始,导致报错,故增加wait等待,再次运行,脚本可以正常运行,至此完成了第一个简单脚本的搭建和运行。

如下是SukuliX提供的一些常用的命令:

openApp(someApp) # 我们使用一个应用程序 someApp

click(imageButton) # 我们点击某个按钮

wait(imageExpected1) # 我们等待应用做出反应并在屏幕上显示预期的结果

type(“some text”); type(Key.ENTER) # 我们填写一些文本并按 ENTER 键

wait(imageExpected2) # 再次等待一些预期的反应或结果

Sikulix 的一个基本功能是等待图像出现在给定区域:

# 屏幕左上角的某个部分

aRegion = 区域(0, 0, 500, 500)

# 文件系统上的 png 图片文件

# 这是我们要在给定区域中查找的图像

aImage = “someImage.png”

# 搜索并获取结果

aMatch = aRegion.find(aImage)

要加载图像,SikuliX 有 2 个原则:

  • bundle path:图像与脚本文件(Python 为 .py,Ruby 为 .rb,JavaScript 为 .js)一起存储在名为 someScript.sikuli 的文件夹中,其中脚本文件的名称必须与文件夹相同(例如 someScript.py)。当使用SikuliX IDE时,这一切都会自动得到保证。
  • 图像路径:此外,SikuliX 还支持将地点列表作为图像路径。可能的位置是文件系统中的文件夹、jar 文件中的文件夹以及 Internet 中某处的文件夹。有一些功能可用于管理您自己的图像路径。当必须加载图像时(例外:给出绝对路径),将按顺序检查位置是否存在图像。第一个匹配名次获胜。

 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐