专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 软件测试

selenium+java,实现一部分截图功能,针对单个元素的截图

发布时间:2011-06-20 19:10:50 文章来源:www.iduyao.cn 采编人员:星星草
selenium+java,实现部分截图功能,-针对单个元素的截图

有时候需要元素的截图,不需要整个截图。整理一个针对元素的截图的方法。

创建一个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;
    }

}
View Code

 

在方法中调用此方法实现截取元素的功能

获取到的截图:

 

 可以把相关的截图放置在测试报告中:

(我这使用的是testNG+extentreports生成的报告,具体的extentReports使用方法,使用的第一种方法,可以参照这里)

 

转载注明来源

1楼月夜归醉
大神,可以提供下源码吗?
Re: Lozz
@月夜归醉,FileUtils.copyFile(CreateElementScreenshot.captureElement(adminpage.mailFolder_lnk()),new File(quot;D:\seleniumproject\com.lozz.SeleniumProject\Screenshot\quot;+ adminpage.mailFolder_lnk().getText() + quot;.pngquot;));,调用这个方法,保存元素的截图,----------------------------------------------------,extest.log(LogStatus.INFO, extest.addScreenCapture(quot;D:\seleniumproject\com.lozz.SeleniumProject\Screenshot\quot;+ adminpage.mailFolder_lnk().getText() + quot;.pngquot;));,这样在你的报告中添加刚才的截图,就好了
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: