Webdriver中实现区域截图的方式以及如何截取frame中的图片
Posted zw520ly
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Webdriver中实现区域截图的方式以及如何截取frame中的图片相关的知识,希望对你有一定的参考价值。
import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import org.apache.commons.io.FileUtils;
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;
public class ScreenShot {
public void screenShotForElement(WebDriver driver,WebElement element, String path,int x,int y) throws InterruptedException {
//截取整个页面的图片
File scrFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
try {
//获取元素在所处frame中位置对象
Point p = element.getLocation();
//获取元素的宽与高
int width = element.getSize().getWidth();
int height = element.getSize().getHeight();
//矩形图像对象
Rectangle rect = new Rectangle(width, height);
BufferedImage img = ImageIO.read(scrFile);
//x、y表示加上当前frame的左边距,上边距
BufferedImage dest = img.getSubimage(p.getX()+x, p.getY()+y,rect.width, rect.height);
ImageIO.write(dest, "png", scrFile);
FileUtils.copyFile(scrFile, new File(path));
} catch (IOException e) {
e.printStackTrace();
}
}
}
以上是关于Webdriver中实现区域截图的方式以及如何截取frame中的图片的主要内容,如果未能解决你的问题,请参考以下文章
有没有很好的例子说明如何在 selenium webdriver C# 中截取屏幕截图,然后裁剪并保存图像?
以编程方式截取 iOS 中另一个应用程序的整个可滚动区域的屏幕截图