一. SikuliX是什么
- SikuliX的前身是 Sikuli。Sikuli是由MIT(麻省理工学院)研究团队发布的一种基于OpenCV图像识别技术的自动化工具软件。
- Sikuli 是2009 年由在麻省理工学院用户界面设计小组作为一个开源研究项目,负责人分别是Tsung-Hsiang Chang 和 Tom Yeh。两人在 2012 年离开了 Sikuli-X-1.0rc3 的项目。后续由RaiMan接管开发和支持至今,并将其命名为 SikuliX。
- SikuliX可对人眼能看到的任意应用软件界面进行自动控制,以实现各种软件操作步骤的自动化。软件界面可以是Windows、Mac或则Linux/Unix系统上的任何可见内容。
- 提供了SikuliX IDE,用户可通过简单的脚本开发实现屏幕上人眼可见的任何图形界面进行各种操作,如模拟操作鼠标点击、拖动,或则模拟键盘的输入
- 目前最新的稳定版本为 SikuliX 2.05,2.06版本即将发布。之前网络上对SikuliX介绍的都是1.0x版本。
二. SikuliX可能的使用场景
- 在日常工作中,希望控制软件自动的执行重复性的任务
- 在软件自动测试中,被测软件的组件不能准确识别时,可以使用SikuliX
- 机器人流程自动化(Robotic process automation,简称RPA)以软件机器人及人工智能(AI)为基础进行流程自动化
三. 在工程中添加依赖
在工程中添加依赖包
<dependency>
<groupId>com.sikulix</groupId>
<artifactId>sikulixapi</artifactId>
<version>2.0.5</version>
</dependency>
该文件较大,如果下载缓慢可直接去官网手动下载对应依赖jar,下载地址 https://raiman.github.io/SikuliX1/downloads.html
四. 编写自动化脚本
需求描述:
1、先点击按钮1,然后点击按钮2,间隔 3 秒后,再次点击按钮 2;
2、点击按钮 2 后 接着点击按钮 3 ,间隔 1 秒后,点击按钮 4;
自动点击的按钮图片截图
在第三方软件运行界面对应截出需自动点击的按钮图片
编写自动化脚本
package com.rpa;
import org.junit.Test;
import org.sikuli.script.Region;
import org.sikuli.script.Screen;
import java.io.File;
public class SikuliXTest {
@Test
public void ckButtonTest() throws Exception{
Region screen = new Screen();
String baseFilePath = new File("").getAbsolutePath()+File.separator;
if(screen.exists(baseFilePath+"images\\button\\1.png").isValid()){
System.out.println("OK");
screen.click(baseFilePath+"images\\button\\1.png");
screen.click(baseFilePath+"images\\button\\2.png");
Thread.sleep(3000);
screen.click(baseFilePath+"images\\button\\2.png");
screen.click(baseFilePath+"images\\button\\3.png");
Thread.sleep(1000);
screen.click(baseFilePath+"images\\button\\4.png");
}else{
System.out.println("NO");
}
}
}
click事件,点击前将隐式等待 0.5 秒,如果想设置更短的时间可以通过 Settings.MoveMouseDelay 进行设置。
五. 接口说明文档
https://sikulix.github.io/docs/api/scripting
https://raiman.github.io/SikuliX1/javadocs/org/sikuli/script/Region.html