有時候需要元素的截圖,不需要整個截圖。整理一個針對元素的截圖的方法。
創建一個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; } }
在方法中調用此方法實現截取元素的功能

獲取到的截圖:


可以把相關的截圖放置在測試報告中:
(我這使用的是testNG+extentreports生成的報告,具體的extentReports使用方法,使用的第一種方法,可以參照這里)

https://www.cnblogs.com/lozz/p/7251315.html
轉載注明來源
