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 中另一个应用程序的整个可滚动区域的屏幕截图

我如何同时传递 x 和 y 轴以及屏幕的高度和宽度以快速以编程方式截取屏幕截图

小程序(网页)中实现页面截图

UI通过元素定位实现特定区域截图