当前位置: 首页 > news >正文

Selenium的UI自动化测试屏幕截图功能实例代码

UI自动化测试执行过程中,当遇到检查失败的情况,往往会发现打印的log并不能有效地帮助我们定位问题。我们需要失败时刻的屏幕截图来重现当时的失败场景,进而排查出错原因。

基于这种需求可以使用Selenium的屏幕截图功能。

实现代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

import java.io.File;

import java.io.IOException;

import org.apache.commons.io.FileUtils;

import org.apache.commons.lang3.time.DateUtils;

import org.openqa.selenium.OutputType;

import org.openqa.selenium.TakesScreenshot;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.interactions.Actions;

public static void takeScreeshot(String screenPath, WebDriver chrome){

try {

//指定了OutputType.FILE做为参数传递给getScreenshotAs()方法,其含义是将截取的屏幕以文件形式返回。

File scrFile = ((TakesScreenshot) chrome)

.getScreenshotAs(OutputType.FILE); // 关键代码,执行屏幕截图,默认会把截图保存到temp目录

FileUtils.copyFile(scrFile, new File(screenPath)); //利用FileUtils工具类的copyFile()方法保存getScreenshotAs()返回的文件对象。

} catch (IOException e) {

System.out.println("Screen shot error: " + screenPath);

System.out.println("该错误可以查看截图:"+screenPath);

} catch (Exception e) {

// TODO: handle exception

}

}

public static void takeScreenshot(WebDriver chrome,String imgName) {

String screenName=imgName+DateUtils.MILLIS_PER_DAY+".jpg";

String fileString= "D:\\selenium\\SchoolpalERP_QTP\\image";

if (!(new File(fileString).isDirectory())) { // 判断是否存在该目录

new File(fileString).mkdir(); // 如果不存在则新建一个目录

}

File dir = new File(fileString);

if (!dir.exists())

dir.mkdirs();

String screenPath = dir.getAbsolutePath() + "\\" + screenName;

takeScreeshot(screenPath, chrome);

}

最后:下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

​​​件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

http://www.cnnetsun.cn/news/1294765.html

相关文章:

  • S32K144实战:基于SDK的Bootloader与APP无缝跳转设计
  • 避坑指南:SHAP的summary_plot修改颜色不生效?可能是cmap参数没用对
  • 手机检测WebUI权限管理:基于OAuth2的多角色(管理员/监考员)控制
  • 立创开源:基于中科蓝汛AB5301A与启英泰伦CI1302的离线语音蓝牙音箱全方案解析
  • DeepSeek-R1 1.5B完全指南:下载、部署、使用、优化一步到位
  • Cesium模型与视频结合实战:提升三维场景动态展示效率的解决方案
  • 4大优势!FastAPI Admin让后台开发效率提升80%
  • YimMenu全面指南:从入门到精通的开源GTA V辅助工具
  • 我写了一本从零实现深度学习与大语言模型的入门教程
  • 从行程编码到形态学:Halcon中erosion、connection、fill_up的算法实现与优化
  • 【第二周】RAG与Agent实战07:提示词优化案例_金融信息抽取
  • 0314爬紫金山
  • ChatGPT Python SDK深度实战:从API封装到生产环境最佳实践
  • Android应用集成AI:将Nanbeige 4.1-3B模型API封装为移动端SDK
  • 51单片机时钟电路设计避坑指南:从晶振选型到PCB布局的5个关键细节
  • wps word 修改无格式粘贴快捷键为 ctrl+shift+v
  • 如何突破SIM卡区域限制?3大创新技术重构跨境网络体验
  • MPh颠覆式仿真自动化:全流程工程问题的Python解决方案
  • 逆向解析百度搜索核心技术
  • 基于立创泰山派RK3566开发板打造智能小手机:从硬件选型到系统编译全流程实战
  • 3步突破流体测量瓶颈:面向科研人员的PIVlab实战指南
  • AI头像生成器效果展示:写实人像Prompt生成——毛孔细节/发丝纹理/自然阴影
  • E5071C数据管理进阶:从本地SNP/CSV到云端SCPI脚本的自动化实践
  • 实时数据推送新选择:SSE技术解析
  • JavaScript性能优化实战卣藏
  • JavaScript性能优化实战致籽
  • 雷电模拟器上运行Frida 16.0.10的避坑指南:从安装到实战
  • Qwen3-0.6B-FP8快速部署教程:应对高并发对话的架构设计
  • 基于PT2023的单芯片触控调光小夜灯硬件设计
  • 避坑指南:Windows系统kubectl安装后连接k8s集群的5个常见问题解决