selenium页面元素截图

时间:2021-09-07 15:22:08
[java] view plain copy selenium页面元素截图selenium页面元素截图
  1. package com.selenium.api;  
  2. import java.awt.Rectangle;  
  3. import java.awt.image.BufferedImage;  
  4. import java.io.File;  
  5.   
  6. import javax.imageio.ImageIO;  
  7.   
  8. import org.apache.commons.io.FileUtils;  
  9. import org.junit.Test;  
  10. import org.openqa.selenium.By;  
  11. import org.openqa.selenium.OutputType;  
  12. import org.openqa.selenium.Point;  
  13. import org.openqa.selenium.TakesScreenshot;  
  14. import org.openqa.selenium.WebDriver;  
  15. import org.openqa.selenium.WebElement;  
  16. import org.openqa.selenium.firefox.FirefoxDriver;  
  17. import org.openqa.selenium.internal.WrapsDriver;  
  18.   
  19. public class Util {  
  20.   
  21.     //页面元素截图  
  22.     public static File captureElement(WebElement element) throws Exception {  
  23.         WrapsDriver wrapsDriver = (WrapsDriver) element;  
  24.         // 截图整个页面  
  25.         File screen = ((TakesScreenshot) wrapsDriver.getWrappedDriver()).getScreenshotAs(OutputType.FILE);  
  26.         BufferedImage img = ImageIO.read(screen);  
  27.         // 获得元素的高度和宽度  
  28.         int width = element.getSize().getWidth();  
  29.         int height = element.getSize().getHeight();  
  30.         // 创建一个矩形使用上面的高度,和宽度  
  31.         Rectangle rect = new Rectangle(width, height);  
  32.         // 得到元素的坐标  
  33.         Point p = element.getLocation();  
  34.         BufferedImage dest = img.getSubimage(p.getX(), p.getY(), rect.width,rect.height);  
  35.         //存为png格式  
  36.         ImageIO.write(dest, "png", screen);  
  37.         return screen;  
  38.     }  
  39.       
  40.     @Test  
  41.     public void testCaptureElement(){  
  42.         WebDriver driver=new FirefoxDriver();  
  43.         driver.manage().window().maximize();  
  44.         driver.get("https://www.baidu.com");  
  45.         WebElement wb = driver.findElement(By.id("su"));  
  46.         try {  
  47.             FileUtils.copyFile(captureElement(wb), new File("c:\\a.png"));  
  48.         } catch (Exception e) {  
  49.             e.printStackTrace();  
  50.         }  
  51.         driver.quit();  
  52.     }  
  53. }