selenium+java,实现部分截图功能,-针对单个元素的截图
2024-08-28 20:36:16
有时候需要元素的截图,不需要整个截图。整理一个针对元素的截图的方法。
创建一个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;
} }
在方法中调用此方法实现截取元素的功能
获取到的截图:
可以把相关的截图放置在测试报告中:
(我这使用的是testNG+extentreports生成的报告,具体的extentReports使用方法,使用的第一种方法,可以参照这里)
https://www.cnblogs.com/lozz/p/7251315.html
转载注明来源
最新文章
- maven pom中 设置远程仓库url
- 小结-stm32 驱动LED灯
- Linux下串口ttyS2,ttyS3不能用的问题解决办法
- 百度地图API使用
- MS-SQL Server字符串处理函数大全
- 防止横竖屏时,iphone自动缩放的一段js代码
- 【转】Android Listener侦听的N种写法
- Socket,非阻塞,fcntl
- Bellman 算法
- json对象的封装与解析
- mysql 创建临时节点
- php设计模式——UML类图
- hdu_5879_Cure(打表)
- Spark之UDF
- Listener监听器和Filter过滤器
- 第四百零二节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署,uwsgi安装和启动,nginx的安装与启动,uwsgi与nginx的配置文件+虚拟主机配置
- 05-TypeScript中的方法新功能(下)
- ArcGIS Arcade
- 关于JavaScript原型对象那些事儿
- 指定webapi 返回 json 格式 ; GlobalConfiguration.Configuration.Formatters.Clear()
热门文章
- 在JavaScript中进行文件处理,第五部分:Blobs
- 第24课 #pragma使用分析
- I.MX6 Manufacturing Tool V2 (MFGTool2) Emmc mksdcard.sh hacking
- 20155211 2016-2017-2 《Java程序设计》第八周学习总结
- JAVA四则运算算法
- 《DSP using MATLAB》Problem 3.3
- graphql-binding openapi 集成demo
- 使用UNetbootin制作U盘启动
- macOS -- Mac系统如何通过终端使用mysql
- MySQL的WHERE语句中BETWEEN与IN的用法和他们的区别