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); //設定識別區域