selenium+java,實現部分截圖功能,-針對單個元素的截圖


有時候需要元素的截圖,不需要整個截圖。整理一個針對元素的截圖的方法。

創建一個Java類,實現截取元素的方法

package com.lozz.utils;

import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.io.File;

import javax.imageio.ImageIO;

import org.openqa.selenium.OutputType;
import org.openqa.selenium.Point;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.internal.WrapsDriver;

/**
 * @Title: CreateElementScreenshot.java
 * @Package com.lozz.utils
 * @Description: TODO(使用WebDriver對特定的WebElement截圖)
 * @date 2017年7月28日 下午4:20:46
 * @version V1.0
 */
public class CreateElementScreenshot {

    public static File captureElement(WebElement element) throws Exception {
        // TODO Auto-generated method stub
        WrapsDriver wrapsDriver = (WrapsDriver) element;
        // 截圖整個頁面
        File screen = ((TakesScreenshot) wrapsDriver.getWrappedDriver()).getScreenshotAs(OutputType.FILE);
        BufferedImage img = ImageIO.read(screen);
        // 獲得元素的高度和寬度
        int width = element.getSize().getWidth();
        int height = element.getSize().getHeight();
        // 創建一個矩形使用上面的高度,和寬度
        Rectangle rect = new Rectangle(width, height);
        // 得到元素的坐標
        Point p = element.getLocation();
        BufferedImage dest = img.getSubimage(p.getX(), p.getY(), rect.width, rect.height);
        // 存為png格式
        ImageIO.write(dest, "png", screen);
        return screen;
    }

}
View Code

 

在方法中調用此方法實現截取元素的功能

獲取到的截圖:

 

 可以把相關的截圖放置在測試報告中:

(我這使用的是testNG+extentreports生成的報告,具體的extentReports使用方法,使用的第一種方法,可以參照這里

 https://www.cnblogs.com/lozz/p/7251315.html

轉載注明來源


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM