news 2026/6/10 14:00:43

自动化测试-关键数据记录(日志+截图+页面源码)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
自动化测试-关键数据记录(日志+截图+页面源码)

文章目录

  • 1. 自动化测试中的关键数据?
  • 2. 配置日志
  • 3. 截图
  • 4. pagesource源码记录
  • 总结

✨✨✨学习的道路很枯燥,希望我们能并肩走下来!

编程真是一件很奇妙的东西。你只是浅尝辄止,那么只会觉得枯燥乏味,像对待任务似的应付它。但你如果深入探索,就会发现其中的奇妙,了解许多所不知道的原理。知识的力量让你沉醉,甘愿深陷其中并发现宝藏。



本文开始

1. 自动化测试中的关键数据?

关键数据:
1)代码的执行日志
2)代码执行的截图
3)page source(页面源代码)

记录关键数据的作用?

  • 日志
    记录代码的执行记录,方便复现场景
    可以作为bug依据
  • 截图
    断言失败或成功截图
    异常截图达到丰富报告的作用
    可以作为bug依据
  • page source
    协助排查报错时元素当时是否存在页面上

java使用的依赖:

<!-- pom.xml 日志配置依赖 --><!-- slf4j --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>2.0.0-alpha6</version></dependency><!-- logback --><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.3.0-alpha12</version></dependency>

2. 配置日志

配置位置:java项目下,test包->resources包下->logback.xml文件中配置

logback.xml文件配置

<?xml version="1.0" encoding="UTF-8"?><configuration><!-- name指定<appender>的名称 class指定<appender>的全限定名 ConsoleAppender的作用是将日志输出到控制台--><appendername="STDOUT"class="ch.qos.logback.core.ConsoleAppender"><encoder><!--输出时间格式--><pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36}.%M\(%line\) -- %msg%n</pattern></encoder></appender><!-- 设置测试包为DEBUG级别 --><!--修改name路径-测试包路径和level级别-显示日志级别 如下:记录com.example.first_demo包下DEBUG上的日志 --><loggername="com.example.first_demo"level="DEBUG"/><loggername="com"level="WARN"/><loggername="example"level="WARN"/><loggername="org"level="WARN"/><rootlevel="INFO"><appender-refref="STDOUT"/></root></configuration>

【注】
1)日志级别:
Log4j2:
ALL < TRACE <DEBUG < INFO < WARN < ERROR< FATAL < OFF
当配置某个级别时,只会输出该级别及更高优先级的日志。例如设置为 INFO,则 DEBUG、TRACE 不会输出,输出WARN,ERROR级别日志

各级别含义与场景 ALL:开启所有日志(含自定义级别),调试阶段可用。 TRACE:最细粒度的跟踪信息,如方法调用轨迹,通常不在生产环境启用。 DEBUG:调试信息,开发阶段用于输出变量值、流程状态。 INFO:关键运行信息,生产环境常用,如启动参数、业务结果。 WARN:潜在问题提示,不影响运行但需关注。 ERROR:错误信息,功能受影响但系统可继续运行。 FATAL(Log4j2特有):严重错误,通常导致系统退出。 OFF:关闭所有日志输出。

2)使用日志是需要初始化

publicclassScreenTest{// ✅ 正确方式:使用static final并立即初始化privatestaticfinalLoggerlogger=LoggerFactory.getLogger(ScreenTest.class);// 或者如果是实例loggerprivatefinalLoggerlogger=LoggerFactory.getLogger(ScreenTest.class);}

3)框架不能混用:使用slf4j包

// ❌ 错误:混合使用importjava.util.logging.Logger;// JULimportorg.slf4j.Logger;// SLF4J

4)一般使用习惯 - 脚本/代码在配置日志级别使用:
4.1 debug记录步骤信息
4.2 info记录关键信息,比如断言等

代码中使用日志:

publicstaticvoidLoggerlogger;publicstaticvoidloggerTest(){//LoggerFactory.getLogger(当前测试类作为参数传入);logger=LoggerFactory.getLogger(ActionTest.class);//debug记录一下关键步骤logger.debug("debug:提示");//使用info打印一些断言信息logger.info("查找某元素结果为:。。");}

3. 截图

1)截图方法:getScreenshotAs(OutputType.FILE)
2)记录关键页面
2.1 断言页面
2.2 重要的业务场景页面
2.3 容易出错的页面

第一种截图方式:截取当前页面

//当前页面截图FilescrFile=((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);FileUtils.copyFile(scrFile,newFile("./image.png"));
/** * 截图测试 */@TestpublicvoidscreenTest()throwsIOException{//1.打开百度页面webDriver.get("https://www.baidu.com/");//2.当前页面截图FilescrFile=((TakesScreenshot)webDriver).getScreenshotAs(OutputType.FILE);//保存文件到当前目录FileUtils.copyFile(scrFile,newFile("./img.png"));}

第二种截图方式:根据某个元素所在界面截图
如下:在搜索结果界面找到想要截图的结果,根据查找元素,该元素再调用截图方法;

// 截图的第二种方式,元素所在页面截图WebElementsearch_ele=driver.findElement(By.id("search"));Fileele_res=search_ele.getScreenshotAs(OutputType.FILE);FileUtils.copyFile(ele_res,newFile("./ele_image.png"));
/** * 根据某个元素页面截图 * 输入框输入测试,跳转页面,找到搜索结果第一个元素,截图取第一条文本 */@TestpublicvoidscreenEleTest()throwsIOException{//1.到页面webDriver.get("https://sogou.com/");//2.找到输入框,输入测试,点击按钮,跳转页面WebElementelement_input=webDriver.findElement(By.xpath("//*[@class='sec-input']"));element_input.sendKeys("测试");webDriver.findElement(By.xpath("//*[@class='enter-input']")).click();//3.查找到搜索结果时截图WebElementres_element=webDriver.findElement(By.xpath("//*[@class='reactResult']"));//当前结果元素位置获取截图,返回值是File对象Fileres_ele=res_element.getScreenshotAs(OutputType.FILE);FileUtils.copyFile(res_ele,newFile("./img2.png"));}

4. pagesource源码记录

1)获取页面源码方法:使用getPageSource()方法获取页面源码
2)在调试过程中,如果有找不到元素的错误可以保存当时的page_source调试代码
【注】获取源码可初步判断当时页面是否存在定位的元素,如果有,测试其他问题;

第一种页面源码记录

// 在报错行前面添加保存page_source的操作//打印pagesourceStringpageSource=driver.getPageSource();logger.debug(pageSource);

第二种方式:记录转化为文件 =》推荐使用
【注】
java源码格式化快捷键:ctrl+alt+L

// 在报错行前面添加保存page_source的操作StringpageSource=driver.getPageSource();//记录为文件FileWriterfileWriter=newFileWriter("./files/page_source.text");fileWriter.write(pageSource);

页面源码获取示例代码:
【注】需要提前初始化logger, 不然报空指针异常找不到
private static final Logger logger = LoggerFactory.getLogger(ScreenTest.class);

privatestaticfinalLoggerlogger=LoggerFactory.getLogger(ScreenTest.class);/** * 页面源码获取:pageSource() */@TestpublicvoidpageSourceTest()throwsIOException{//1.到页面webDriver.get("https://sogou.com/");//2.1打印StringpageSource=webDriver.getPageSource();logger.debug(pageSource);//2.2 源码转文件在查看FileWriterpageSourceFile=newFileWriter("./pageSource.html");pageSourceFile.write(pageSource);}

获取到页面源码,可以根据元素,文本直接到源码中查找,如果存在,证明不是元素错误,没出现原因;


总结

✨✨✨各位读友,本篇分享到内容是否更好的帮助你理解,如果对你有帮助给个👍赞鼓励一下吧!!
🎉🎉🎉世上没有绝望的处境,只有对处境绝望的人。
🎉🎉🎉一遇挫折就灰心丧气的人,永远是个失败者。而一向努力奋斗,坚韧不拔的人会走向成功。
感谢每一位一起走到这的伙伴,我们可以一起交流进步!!!一起加油吧!!!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 19:52:39

30、Nagios配置与使用全攻略

Nagios配置与使用全攻略 1. Nagios配置基础 Nagios的所有配置都通过“Configuration”选项卡完成。GroundWork将自身配置信息存储在MySQL数据库中。当你在界面上进行更改时,这些更改首先会反映在数据库里。只有当你提交更改后,GroundWork才会将配置转换为单独的Nagios配置文…

作者头像 李华
网站建设 2026/6/10 13:29:21

亿赛通脚本远程调试配置技巧

要进行远程调试&#xff0c;主要是对 Tomcat 和 Java进程 进行调试。以下是针对该系统的远程调试配置方法&#xff1a; 一、Tomcat远程调试配置 1. 修改Tomcat启动脚本 找到Tomcat的启动脚本&#xff08;通常在/esafenet/tomcat/bin/catalina.sh或startup.sh&#xff09;&#…

作者头像 李华
网站建设 2026/6/10 10:41:47

图片转文字技术(一)从光学识别到智能理解的演进之路

引言 在数字化浪潮中&#xff0c;图片转文字技术已悄然渗透到我们日常生活的方方面面。从手机相册中提取证件信息&#xff0c;到扫描纸质文档生成可编辑文本&#xff1b;从自动驾驶汽车识别路牌&#xff0c;到视障人士通过屏幕阅读器获取图像内容——这项技术的应用场景正在不断…

作者头像 李华
网站建设 2026/6/10 13:29:45

【Python与生活】Python实战 | 全网最全QS世界大学排名分析

一、前言 QS世界大学排名是全球最具影响力的大学排名之一&#xff0c;无论是留学选校、学术研究还是高校竞争力分析&#xff0c;都有重要参考价值。本文将手把手教你用Python完成QS排名的数据爬取、清洗、分析与可视化&#xff0c;从0到1实现完整的数据分析流程&#xff0c;即使…

作者头像 李华
网站建设 2026/6/9 3:16:19

在C# 中搭建基于VisionPro的多相机多线程采集与Socket通讯的视觉系统

c#visionpro视觉系统源代码 多相机多线程采集 Socket通讯在工业自动化和机器视觉领域&#xff0c;多相机多线程采集数据并通过Socket通讯进行数据传输是一项常见且重要的任务。借助C# 的强大功能以及VisionPro视觉系统&#xff0c;我们可以高效地实现这一过程。 多相机多线程采…

作者头像 李华
网站建设 2026/6/9 6:54:39

服务架构相关知识及演进

1. 基本概念应用&#xff08;Application&#xff09;/ 系统&#xff08;system&#xff09; 完成一整套服务的一个程序或一组相互配合的程序群模块&#xff08;Module&#xff09;/ 组件&#xff08;Component&#xff09; 应用程序复杂时&#xff0c;会将其划分不同的部分&am…

作者头像 李华