如何使用 Selenium WebDriver 截取部分屏幕截图(框架)? [英] How to take partial screenshot (frame) with Selenium WebDriver?

查看:34
本文介绍了如何使用 Selenium WebDriver 截取部分屏幕截图(框架)?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否可以使用 WebDriver 截取框架集中仅一帧(不是完整窗口)的屏幕截图?

Is it possible to take a screenshot with WebDriver of only one frame (not the complete window) within a frameset?

或者,是否可以定义屏幕截图的窗口坐标或之后裁剪图像?

Alternatively, is it possible to define coordinates of a window for the screenshot or crop the image afterwards?

推荐答案

这应该有效:

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

import javax.imageio.ImageIO;

import org.openqa.selenium.By;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.Point;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;

public class Shooter{

    private WebDriver driver;

    public void shootWebElement(WebElement element) throws IOException  {

        File screen = ((TakesScreenshot) this.driver).getScreenshotAs(OutputType.FILE);

        Point p = element.getLocation();

        int width = element.getSize().getWidth();
        int height = element.getSize().getHeight();

        BufferedImage img = ImageIO.read(screen);

        BufferedImage dest = img.getSubimage(p.getX(), p.getY(), width,   
                                 height);

        ImageIO.write(dest, "png", screen);

        File f = new File("S:\\ome\\where\\over\\the\\rainbow");

        FileUtils.copyFile(screen, f);

    }
}

这篇关于如何使用 Selenium WebDriver 截取部分屏幕截图(框架)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆