WebDriver中实现对特定的Web区域截图方法

用过 WebDriver 的同学都知道,WebDriver 可以对浏览器中的页面进行截图。例如:

public byte[] takeScreenshot() throws IOException {

TakesScreenshot takesScreenshot = (TakesScreenshot) driver;

return takesScreenshot.getScreenshotAs(OutputType.BYTES);

}

这样产生的图片是整个网页。但有时候我们并不需要整个网页,只需要某些特定的 WebElement,以避免一些干扰。

虽然 WebDriver 本身没有提供这样的 API,不过我们可以自己来,就是在全屏的截图中再进行裁剪,如下:

public BufferedImage createElementImage(WebElement webElement)

throws IOException {

// 获得webElement的位置和大小。

Point location = webElement.getLocation();

Dimension size = webElement.getSize();

// 创建全屏截图。

BufferedImage originalImage =

ImageIO.read(new ByteArrayInputStream(takeScreenshot()));

// 截取webElement所在位置的子图。

BufferedImage croppedImage = originalImage.getSubimage(

location.getX(),

localtion.getY(),

size.getWidth(),

size.getHeight());

return croppedImage;

}

其中 ImageIO 和 BufferedImage 分别来自 javax.imageio 和 java.awt.image。

这种方法可以很好的削减截图的大小,也避免了一些不确定因素(比如日期时间等),是测试中保存截图的很好的方式。

注:如果测试的网页中含有 iframe,则需要使用更复杂的方式计算 WebElement 的位置,详见:计算网页中某个元素的位置。相关阅读:

Linux系统如何安装及配置ClusterShell工具以便了解负载情况

Windows8系统无线网络受限无线连接受限的解决方法

电脑中如何将耳机和扬声器设为独立音源

WordPress导航菜单的滚动和淡入淡出效果的实现要点

jquery插件Jplayer使用方法简析

C#配置文件Section节点处理总结

如何实现chrome浏览器关闭页面时弹出“确定要离开此面吗?”

基于Android实现桌面悬浮清内存app概述

Centos中安装多个mysql数据的配置实例

创建自己的jquery表格插件

vbs打开ie两种方法 在VBScript中启动IE浏览器的实现代码

mac系统flash老是过期一个月更新好几次该怎么办?

解析SQLServer获取Excel中所有Sheet的方法

ASP.NET笔记之 控件与母板的区别分析

java web截屏_java_WebDriver中实现对特定的Web区域截图方法,用过 WebDriver 的同学都知道,We - phpStudy...相关推荐

  1. Java代码截屏:使用 Java 代码截取电脑屏幕并保存

    本文链接: http://blog.csdn.net/xietansheng/article/details/78453640 Java Swing 图形界面开发(目录) Java代码截屏使用java ...

  2. java web截屏_如何使用Selenium WebDriver截屏

    有谁知道是否可以使用Selenium WebDriver截屏? (注:不是硒RC) #1楼 吉顿 import org.openqa.selenium.OutputType as OutputType ...

  3. java 滚动截屏_浏览器实现滚动截屏

    工作日志:实现浏览器滚动截屏,并且是指定的iframe在跨域的情况下. 首先拿到这个需求的时候,想了一下,实现滚动截屏并不难,难的具体的情况如下, 在IE浏览器的情况下,在前端实现,并且iframe是 ...

  4. c# 非顶层截屏_C#中三种截屏方式总结

    昨天写自动化测试的CASE的时候,碰到一个疑难杂症,调用截图的函数去截取一个Popup窗口,但是总是把背景程序给截下来,Popup窗口就跟看不到一样.本来以为是同步的问题,也就是以为先截图再点击弹出P ...

  5. Android11怎么截屏,对标IOS?Android11或无缘屏幕长截图

    我收集了一些学习用的资料,其中包含了很多学习,面试,中高进阶fluuter资料,还有很多视频详解,如果有同学想进一步了解,详情请看文末.也欢迎各路大神门前来装X. 一直以来,不少用户都很喜欢用长截图功 ...

  6. java equals重写原则_java中为何重写equals时必须重写hashCode方法详解

    前言 大家都知道,equals和hashcode是java.lang.Object类的两个重要的方法,在实际应用中常常需要重写这两个方法,但至于为什么重写这两个方法很多人都搞不明白. 在上一篇博文Ja ...

  7. java按钮添加事件_java中添加按钮并添加响应事件的方法(推荐)

    关于java容器,面板等自行百度学一下吧 private button loginbtn = new button("登陆"); final static jframe buyer ...

  8. java数组循环扩容_Java中实现数组动态扩容的两种方法

    Java中实现数组动态扩容的两种方法 java中初始化一个数组需要定义数组的容量,而在我们使用数组时往往会遇到数组容量不够的情况,此时我们就需要通过动态扩容的方式来来根据需求扩大数组的容量. 我们可以 ...

  9. java如何遍历字典_Java中如何遍历Map对象的4种方法

    在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都 ...

最新文章

  1. 【Linux】内核态和用户态
  2. html5视频播放器脚本怎么用,HTML5 video标签(播放器)学习笔记(一):使用入门...
  3. 安利十二个常用的IPython魔法命令
  4. 关于5G技术和5G技术即将面临的各项挑战
  5. ExecutorService学习小记
  6. cad审图软件lisp_CAD审图软件下载_小智审图(建筑行业智能助手) 3.3.1 个人版_极速下载站_软件下载...
  7. Sql学习第三天——SQL关于with ties
  8. 芯片供应商:芯片一级供应商分类和安全芯片库存
  9. Java微信公众号开发之微信公众平台接入开发者
  10. php mysql 占位符_PDO中预处理语句占位符的使用
  11. 油猴(tampermonkey)脚本安装及使用教程
  12. Java集合的接口和类层次结构图以及代码示例
  13. python机器语言直接用二进制代码表达指令_尔雅慕课搜题app,超星尔雅考试搜题,超星慕课查题app,学堂云搜题...
  14. java 延时的几种方法方法
  15. 低代码开发平台建设步骤及思考
  16. Mac 安装 mkdocs 的环境搭建
  17. 英文数据集txt_Delmia机器人仿真编程 点焊仿真 第1节 焊点坐标数据提取
  18. 关联规则挖掘_基于人工智能的网络告警关联分析处理的应用
  19. 政务大数据系列7:政务大数据的部署结构
  20. 网络安全基础第五版pdf下载_关于征集网络安全在线培训课件的通知

热门文章

  1. 计算机专业买win,新买的电脑是win10系统,有的人却费尽心思重装成win7,为什么呢...
  2. 插入空行_如何一键插入表格空行,这个方法才最高级!
  3. linux课堂笔记(5)
  4. 360手柄摇杆漂移修复_彻底解决你的Switch手柄摇杆问题,最省钱的完美修复。
  5. U-Net++粗略解释
  6. Java 使用 POI 操作 Excel
  7. Java虚拟机-第二篇-GC算法与内存分配策略
  8. Redis详解(三)
  9. Sonar与jenkins集成
  10. 8.4. su - root