自动化工具 Sikuli-Script 使用

Sorin · 2018年04月06日 · 最后由 海豚 回复于 2018年11月21日 · 2494 次阅读

Sikuli-IDE 用起来方便,但是用到实际项目中还是有局限性的,Sikuli 提供了 Sikuli-Script 的 jar 包,在 Sikuli-X 的安装目录下,这样就可以在

eclipse 中使用 JAVA 编写代码了,并用 Sikuli-Script 和 selenium 完美结合使用。

首先新建一个 Sikuli 的项目,导入 Sikuli-Script.jar 包,然后在项目下新建一个 CaleTest.java,并且在项目文件下新建一个存放图片的文件

夹 PNG,在 PNG 文件夹下对应 CaleTest.java 建一个同名的文件夹存放对应使用的图片(便于维护)。

然后就开始敲代码了,代码如下:

package com.sikuli;  

import java.io.IOException;  
import java.text.SimpleDateFormat;  
import java.util.Date;  
import org.sikuli.script.FindFailed;  
import org.sikuli.script.Screen;  

public class CaleTest {  

    public static void main(String[] args) throws IOException, FindFailed {  

        Process app= null;      //新建一个进程  
        String path ="E:\\workspace\\Sikuli\\PNG\\CaleTest\\";   //图片路径  
        String strat = null;  
        String end =null;  

        app=Runtime.getRuntime().exec("calc.exe");  //打开计算器  

        Screen scr = new Screen();   //新建一个操作屏幕  

        //获取时间,打印开始日志         
        Date now = new Date();   
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");        
        strat = dateFormat.format(now);  
        System.out.println("strat"+"-------"+strat);  

        scr.wait(path+"1481855580087.png", 5);    //等待元素出现,超时5秒  
        scr.click(path+"1481855580087.png");        //点击元素  

        scr.wait(path+"1481855635062.png", 5);  
        scr.click(path+"1481855635062.png");  

        scr.wait(path+"1481855675892.png", 5);  
        scr.click(path+"1481855675892.png");  

        scr.wait(path+"1481855716969.png", 5);  
        scr.click(path+"1481855716969.png");  

        scr.wait(path+"1481855763519.png", 5);  
        scr.click(path+"1481855763519.png");  

        scr.wait(path+"1481855820477.png", 5);  
        scr.click(path+"1481855820477.png");  

        Date now1 = new Date();   
        SimpleDateFormat dateFormat1 = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");       
        end = dateFormat1.format(now1);       
        System.out.println("end"+"-------"+end);          


        if (scr.exists(path+"66.png", 1000) != null){  
            System.out.println("测试通过");  
            app.destroy();       //关闭计算器进程    
        }  
        else{  
            System.out.println("测试失败");  
            app.destroy();        
        }  
    }  
}  

运行一下,用时 9 秒

感觉是不是有点慢,因为是在整个电脑屏幕中识别,下面我们把识别范围缩小下,使用 Screen 中的 setRect 方法设置识别区域

app=Runtime.getRuntime().exec("calc.exe");  //打开计算器  

Screen scr = new Screen();   //新建一个操作屏幕  

scr.setRect(596,325,220,315);    //设定识别区域

再次运行看下时间,用时 5 秒,少了差不多一半,当然了这个也是有问题的,就是程序不在这个区域就不行了

共收到 4 条回复 时间 点赞

Sikuli-Script 在哪儿获取啊~~

liupeng 回复

<dependency>
    <groupId>com.sikulix</groupId>
    <artifactId>sikulixapi</artifactId>
    <version>1.1.2</version>
</dependency>
ziyan 回复

楼主好,我就是用你上面的依赖安装的,但是安装完之后无法查看源码,方法都使用不了请问您有否遇到,是否知道是什么原因,谢谢

楼主好,使用后报空指针了
求问是哪里错了么

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册