자바 selenium 캡 처 작업 의 실현

6218 단어 Javaselenium캡 처
방법 1:Selenium 에서 캡 처 클래스 Take Screenshout 입 니 다.이 종 류 는 주로 브 라 우 저 창 에 있 는 내용 을 가 져 옵 니 다.브 라 우 저의 메뉴 와 데스크 톱 의 작업 표시 줄 영역 을 포함 하지 않 습 니 다.우 리 는 바 이 두 첫 페이지 로 캡 처 하여 캡 처 효 과 를 봅 니 다.
FileUtils.copyFile(srcFile,new File("화면 캡 처",time+".png");"화면 캡 처'는 캡 처 파일 을 저장 하기 위해 만 든 폴 더 입 니 다.이 폴 더 는 procject(프로젝트)의 더 많은 디 렉 터 리 에 있 습 니 다.

물론 다른 디 렉 터 리 에 저장 할 수 있 습 니 다FileUtils.copyFile(srcFile, new File("D:\\ ", time + ".png"));예제 코드 는 다음 과 같다.

package com.sandy;
 
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Calendar;
 
import org.apache.commons.io.FileUtils;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
 
public class ScreenShot {
 
	private static WebDriver driver;
	public static void main(String[] args) throws Exception {
 
		System.setProperty("webdriver.chrome.driver", "E:\\eclipse_jar\\selenium_jar\\chromedriver.exe");
		driver = new ChromeDriver();
		driver.get("http://www.baidu.com");
		driver.manage().window().maximize();
		
		/**
		 *     
		 *          
		 */
		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); //      
		String time = dateFormat.format(Calendar.getInstance().getTime()); //      
		File srcFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); //      
		FileUtils.copyFile(srcFile, new File("    ", time + ".png")); //  FileUtils    copyFile()    getScreenshotAs()     ;"    "          
		Thread.sleep(2000);
		driver.quit();
		
	}
 
}
방법 2:로봇 캡 처
예제 코드:(예제 의 그림 은 이 프로젝트 의 루트 디 렉 터 리 에 저장 하 는 것 입 니 다)

package com.sandy;
 
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Calendar;
 
import javax.imageio.ImageIO;
 
import org.apache.commons.io.FileUtils;
import org.openqa.selenium.By;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.Point;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.internal.WrapsDriver;
 
public class ScreenShot {
 
	private static WebDriver driver;
	public static void main(String[] args) throws Exception {
 
		System.setProperty("webdriver.chrome.driver", "E:\\eclipse_jar\\selenium_jar\\chromedriver.exe");
		driver = new ChromeDriver();
		driver.get("http://www.baidu.com");
		driver.manage().window().maximize();
		robotSnapshot();
		
		Thread.sleep(2000);
		driver.quit();
		
	}
	
	/**
	 *      、Robot    
	 * @throws Exception
	 */
	public static void robotSnapshot() throws Exception {
		//      
		BufferedImage img = new Robot().createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
		ImageIO.write(img, "png", new File("robot_screen01.png"));
	}
방법 3:테스트 과정 에서 화면 전 체 를 캡 처 하지 않 고 특정한 요소(또는 대상 구역)의 그림 만 캡 처 해 야 할 때 가 있 습 니 다.
예제 코드:

package com.sandy;
 
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Calendar;
 
import javax.imageio.ImageIO;
 
import org.apache.commons.io.FileUtils;
import org.openqa.selenium.By;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.Point;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.internal.WrapsDriver;
 
public class ScreenShot {
 
	private static WebDriver driver;
	public static void main(String[] args) throws Exception {
 
		System.setProperty("webdriver.chrome.driver", "E:\\eclipse_jar\\selenium_jar\\chromedriver.exe");
		driver = new ChromeDriver();
		driver.get("http://www.baidu.com");
		driver.manage().window().maximize();
		
		WebElement element = driver.findElement(By.id("su"));
		elementSnapshot(element);
		//System.currentTimeMillis()、Calendar.getInstance().getTimeInMillis()        
		FileUtils.copyFile(elementSnapshot(element), new File("    ", System.currentTimeMillis()+".png"));
		Thread.sleep(2000);
		driver.quit();
		
	}
 
	/**
	 *     (    )
	 *           ,       
	 * @throws Exception 
	 */
	public static File elementSnapshot(WebElement element) throws Exception {
		//      
		WrapsDriver wrapsDriver = (WrapsDriver)element;
		File screen = ((TakesScreenshot)wrapsDriver.getWrappedDriver()).getScreenshotAs(OutputType.FILE);
		BufferedImage image = ImageIO.read(screen);
		//       、  
		int width = element.getSize().getWidth();
		int height = element.getSize().getHeight();
		
		//             ,   
		Rectangle rect = new Rectangle(width, height);
		//    
		Point p = element.getLocation();
		BufferedImage img = image.getSubimage(p.getX(), p.getY(), rect.width, rect.height);
		ImageIO.write(img, "png", screen);
		return screen;
	}
	
	
}
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기