有时候需要元素的截图,不需要整个截图。整理一个针对元素的截图的方法。
创建一个Java类,实现截取元素的方法
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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
转载注明来源