Sikuli-Script使用

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秒,少了差不多一半,當然了這個也是有問題的,就是程序不在這個區域就不行了



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章