java自动化将用例和截图一起执行测试放入world中直接生成测试报告【搬代码】

1.首先我们得用例写好之后放入文档中,把不用的案例类型、前置条件去掉之后,如图:
1
放到桌面后,先看执行结果:
在这里插入图片描述

首先,我们先创建一个时间,这个时间主要是给图片创建名称,并且要在插入world中使用该时间去查找对应的图片名称,且该图片名称是唯一值

其次,我们就要创建一个截图的方法,截图主要用于我们对结果的记录,并且保存到对应的文件夹中,方便时间值来查找到并使用它

   //截图放起来,并且返回一个截图时间public static String  Screen(ChromeDriver driver) throws IOException {File file=((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);//直接添加E:/idear/idearxm/jiekou,前面没有。。String times = times();FileUtils.copyFile(file,new File("E:/idear/idearxm/jiekou/test-output/images/"+times+".png"));driver.quit();return times;//把截图时间也返回去}

然后我们就要创建测试用例的代码,执行测试用例,当然我们在这里不是讲解selenium的断言等,主要是使用截图,来创建自动化测试文档给其中放置图片使用。
其实我们在编写selenium的代码时,完全可以将每一个步骤编写成对应的方法,写在一个文件内,等待调用。因为这样我们可以避免代码重复堆叠,最后形成庞大的屎山代码,但是屎山代码完全可以让我们在这个公司越来越稳,后面准备写一篇如何正确使用屎山代码,并且保留bug的文章,和httpclient的自动化测试报告

//这里是编写测试用例执行代码地方public static void test002() throws IOException, InvalidFormatException, InterruptedException {ChromeDriver driver = new ChromeDriver();System.setProperty("webdriver.chrome.bin","C:\\Users\\Administrator\\AppData\\Local\\Google\\Chrome\\Application\\chrome.exe");System.setProperty("webdriver.chrome.driver","C:\\Users\\Administrator\\AppData\\Local\\Google\\Chrome\\Application\\chromedriver.exe");driver.get("http://www.baidu.com");Thread.sleep(5000);String screen = Screen(driver);//调用方法,将截图的时间获取到,放入插入图片那里//        创建一个段落对象。XWPFParagraph paragraph=document.createParagraph();
//        创建一个run。run具体是什么,我也不知道。但是run是这里面的最小单元了。XWPFRun run=paragraph.createRun();
//        插入图片,将screen时间截图的时间获取到,放入插入图片这里run.addPicture(new FileInputStream("E:/idear/idearxm/jiekou/test-output/images/"+screen+".png"),XWPFDocument.PICTURE_TYPE_PNG,screen+".png",Units.toEMU(400),Units.toEMU(200));}

最后呢,我们创建表并且将上述的代码带入其中,在其中放置图片使用

public static final XWPFDocument document = new XWPFDocument();public static void main(String[] args) {try{// 添加段落内容,也就是标题XWPFParagraph p = document.createParagraph();p.setStyle("标题4");//设置标题2p.setFontAlignment(2);//字体对齐方式:1左对齐 2居中3右对齐XWPFRun run = p.createRun();run.setText("xxx测试报告");//添加标题//urlexcel,这个地址是你用例的地址String path="D:\\桌面\\Eworld1.xls";//解析路径Workbook workbook=Workbook.getWorkbook(new File(path));//获取第一张表Sheet sheet = workbook.getSheet(0);//循环获取第一行数据,因为默认第一行为标题行,我们可以从1开始循环,如果需要读取标题行,从0开始for (int i = 1; i <sheet.getRows() ; i++) {//获取第一行的第i行信息 sheet.getcell(列,行);下标从0开始String name = sheet.getCell(0, i).getContents();System.out.println("标题::"+name);//获取第二行的第i行信息String miaoshu = sheet.getCell(1,i).getContents();System.out.println("描述::"+miaoshu);//获取第三行的第i行信息String buzhou = sheet.getCell(2,i).getContents();System.out.println("步骤:"+buzhou);//获取第四行的第i行信息String yuqi = sheet.getCell(3,i).getContents();System.out.println("预期结果:"+yuqi);System.out.println("===========================");//将获取到每行的内容放到数组中String data[]={name,miaoshu,buzhou,yuqi};// 添加段落内容,也就是标题XWPFParagraph paragraph1 = document.createParagraph();paragraph1.setStyle("标题4");//设置标题2paragraph1.setFontAlignment(1);//字体对齐方式:1左对齐 2居中3右对齐XWPFRun run1 = paragraph1.createRun();run1.addBreak();//换行run1.setText(data[0]);//添加第一行段落文本// 添加表格 1行3列XWPFTable table = document.createTable(1,3);// 设置表格的行高和列宽table.setWidth(9000);// 设置列宽table.getRow(0).getCell(0).setWidth("3000");//设置获取第一行1列设置宽度table.getRow(0).getCell(1).setWidth("3000");//设置获取第一行2列设置宽度table.getRow(0).getCell(2).setWidth("3000");//设置获取第一行3列设置宽度int rowCount = 1;int colCount = 3;for (int a = 0; a < rowCount; a++) {XWPFTableRow row = table.getRow(a);if (row == null) {row = table.createRow();}for (int j = 0; j < colCount; j++) {XWPFTableCell cell = row.getCell(j);if (cell == null) {cell = row.addNewTableCell();}if (j==0){XWPFParagraph cellPara = cell.getParagraphArray(0);XWPFRun cellRun = cellPara.createRun();cellRun.setText(data[1]);}else if (j==1){XWPFParagraph cellPara = cell.getParagraphArray(0);XWPFRun cellRun = cellPara.createRun();cellRun.setText(data[2]);}else if (j==2){XWPFParagraph cellPara = cell.getParagraphArray(0);XWPFRun cellRun = cellPara.createRun();cellRun.setText(data[3]);}}}// 保存为Word文件FileOutputStream outStream = new FileOutputStream("output.docx");document.write(outStream);outStream.close();System.out.println("成功生成Word文件!");}catch (Exception e){e.printStackTrace();}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/434858.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux服务器配置与管理(第二次实验)

实验目的及具体要求 目的 1.掌握基于命令行的文件操作 2.掌握基于命令行的目录操作 3.掌握用户账户的命令行操作 4.掌握组账户的命令行操作 5.熟悉磁盘分区操作 6.掌握调整优先级的方法 具体要求 1.掌握基于命令行的文件和目录操作 ①创建测试目录 ②创建文件 ③复…

肌无力的判断方法有什么?

肌无力可能发病在身体的多个部位&#xff0c;最为显著的就是眼睑肌无力&#xff0c;那么除了这种明眼就可以看见的&#xff0c;那些不明显的又该怎么判断呢?看了你就知道了。 因为肌无力是一种比较常见的疾病,所以我们要了解全身肌肉无力的症状&#xff0c;下面为大家介绍肌无…

攻防演练 |解决Nmap无法扫描B段资产问题

前段时间老大发来任务&#xff0c;让帮忙用nmap扫一些ip段&#xff0c;我拿过来就准备开扫… 但是发现nmap无法直接扫描同一B段不同C段下的IP段&#xff0c;例如111.111.111.0-111.111.222.255 原本我是准备写个工具联动nmap来扫描大批量IP段资产的 但是由于环境有些问题&am…

2024 高级前端面试题之 JS 「精选篇」

该内容主要整理关于 JS 的相关面试题&#xff0c;其他内容面试题请移步至 「最新最全的前端面试题集锦」 查看。 JS模块精选篇 1. 数据类型基础1.1 JS内置类型1.2 null和undefined区别1.3 null是对象吗&#xff1f;为什么&#xff1f;1.4 1.toString()为什么可以调用&#xff1…

04. OSPF

文章目录 一. 初识OSPF1.1. OSPF概述1.2. OSPF特性1.3. OSPF的专业术语1.4. OSPF维护的3张表1.5. OSPF报文类型1.6. OSPF的邻居状态 二. 实验题2.1. 实验1&#xff1a;点到点链路上的OSPF2.1.1. 实验目的2.1.2. 实验拓扑图2.1.3. 实验步骤&#xff08;1&#xff09;IP地址配置&…

配置ARP安全综合功能示例

组网图形 ARP安全简介 ARP&#xff08;Address Resolution Protocol&#xff09;安全是针对ARP攻击的一种安全特性&#xff0c;它通过一系列对ARP表项学习和ARP报文处理的限制、检查等措施来保证网络设备的安全性。ARP安全特性不仅能够防范针对ARP协议的攻击&#xff0c;还可以…

力扣算法-Day20

541. 反转字符串II 给定一个字符串 s 和一个整数 k&#xff0c;从字符串开头算起&#xff0c;每计数至 2k 个字符&#xff0c;就反转这 2k 字符中的前 k 个字符。 如果剩余字符少于 k 个&#xff0c;则将剩余字符全部反转。如果剩余字符小于 2k 但大于或等于 k 个&#xff0c…

网安渗透攻击作业(1)

实现负载均衡 第一步&#xff1a;安装依赖 sudo apt insta11 libgd-dev 第二步&#xff1a;下载nginx wget http://nginx.org/download/nginx-1.22.1.tar.gz 第三步&#xff1a;对nginx进行解压 tar -zvxf nginx-1.22.1.tar.g2 第四步&#xff1a;编译安装nginx cd ngi…

CES 2024的亮点仅仅聚焦AI深度赋能和产业创新吗?| DALL-E 3、Stable Diffusion等20+ 图像生成模型综述

随着科技飞速发展&#xff0c;CES&#xff08;国际消费电子展&#xff09;已然成为全球科技产业的风向标&#xff0c;每年的CES大会都是业界瞩目的盛事。回顾2024年CES大会&#xff0c;不难发现其亮点纷呈&#xff0c;其中以人工智能的深度赋能为最引人注目之处。AI技术的深入应…

acwing 质数 约数 欧拉函数

目录 质数试除法定质数分解质因数筛质数 约数试除法求约数乘积的约数个数最大公约数 欧拉函数筛法求欧拉函数和 质数 试除法定质数 bool is_prime(int num) {if(num < 2)return false;for(int i 2; i < num / i; i)if(num % i 0)return false;return true; }分解质因…

vue2 事件总线

原图下载&#xff1a;https://download.csdn.net/download/weixin_47401101/88788636

17. Spring Boot Actuator

17. Spring Boot Actuator Spring Boot执行器(Actuator)提供安全端点&#xff0c;用于监视和管理Spring Boot应用程序。 默认情况下&#xff0c;所有执行器端点都是安全的。 在本章中&#xff0c;将详细了解如何为应用程序启用Spring Boot执行器。 启用Spring Boot Actuator …