Sikuli元素異常處理(截圖及打印日誌)

Sikuli框架在出現異常時,沒有做出一些好的處理,比如截圖,打印日誌,還有對程序的回收,我們可以通過java中的方法對Sikuli進行封裝一下,實現這些功能,好了,看如下代碼

package com.sikuli;

import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;
import org.sikuli.script.Screen;


public class SikuliElWait {
	
 	
	 /****************************************************************
	 * 對屏幕進行拍照
	 * 
	 ****************************************************************/
 
	public static void  snapShot(String path) throws Exception {
		
		String imaFormat ="png";
		Dimension d = Toolkit.getDefaultToolkit().getScreenSize();	 
	        String fName = path +"eImage/";
		
		BufferedImage screenshot = (new Robot()).createScreenCapture(new
		                     Rectangle(0, 0, (int) d.getWidth(), (int) d.getHeight()));
		 
		 
		File folder =new File(fName);
		if  (!folder .exists()  && !folder .isDirectory()) {
		 		    folder.mkdir(); 
		 	} 
		 
		String name=fName+"err."+imaFormat;
		File f = new File(name);
		 
		//將screenshot對象寫入圖像文件
		ImageIO.write(screenshot, imaFormat, f);

	}

	 /****************************************************************
	 * 等待元素出現,如果元素有異常,進行當前頁面截圖並關閉應用程序
	 * 
	 ****************************************************************/	
	
	public static  void waitEl(Screen scr,String className,String path,String ima,double time,Process app) throws Exception{
		Logger log = LogManager.getLogger(className);
		DOMConfigurator.configure("log4j.xml");
		try {
			scr.wait(path+ima, time);
			log.info("元素存在");
		} catch (Exception e) {			
			SikuliElWait.snapShot(path);
			log.info("元素不存在");
			app.destroy();
			throw(e);
		}				
	}

}


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