如何将protractor-html-screenshot-reporter生成的HTML报告转换为Excel?
把Protractor HTML截图报告转成Excel的实用方案
我来分享几个靠谱的方法,不管你是想批量自动化处理还是手动快速导出都能覆盖到:
方法一:用Node.js脚本自动化处理(推荐集成到测试流程)
如果你的项目是基于Node.js的,这个方法可以直接集成到测试流水线里,批量处理报告非常方便:
- 先安装依赖包
打开终端,在项目根目录下运行:
npm install cheerio xlsx --save-dev
cheerio用来解析HTML结构,提取数据xlsx用来生成Excel文件
- 编写转换脚本
新建一个比如html-to-excel.js的文件,写入以下代码(记得根据你的实际报告结构调整选择器):
const fs = require('fs'); const cheerio = require('cheerio'); const XLSX = require('xlsx'); // 替换成你的HTML报告路径 const htmlPath = './reports/protractor-report.html'; // 输出的Excel文件名 const excelOutputPath = './reports/test-results.xlsx'; // 读取HTML内容 const htmlContent = fs.readFileSync(htmlPath, 'utf8'); const $ = cheerio.load(htmlContent); // 提取测试数据 - 这里假设报告的结果表格类名为'results-table',需要根据你的报告实际结构修改 const tableRows = []; // 先提取表头 const headers = $('table.results-table th').map((_, th) => $(th).text().trim()).get(); tableRows.push(headers); // 提取每一行的测试数据 $('table.results-table tbody tr').each((_, tr) => { const rowData = $(tr).find('td').map((_, td) => $(td).text().trim()).get(); // 如果报告里有截图链接,你可以额外提取路径添加到行中: // const screenshotUrl = $(tr).find('td a[href$=".png"]').attr('href'); // rowData.push(screenshotUrl); tableRows.push(rowData); }); // 创建Excel工作簿和工作表 const workbook = XLSX.utils.book_new(); const worksheet = XLSX.utils.aoa_to_sheet(tableRows); XLSX.utils.book_append_sheet(workbook, worksheet, '测试结果'); // 导出Excel文件 XLSX.writeFile(workbook, excelOutputPath); console.log(`Excel报告已成功生成:${excelOutputPath}`);
- 运行脚本
在终端执行:
node html-to-excel.js
注意:一定要打开你的HTML报告源码,确认表格的类名、结构是否和脚本里的选择器匹配,不同版本的protractor-html-screenshot-reporter生成的HTML可能略有差异。
方法二:用Python快速转换(适合熟悉Python的同学)
如果你更习惯用Python,Pandas自带的HTML表格读取功能会让这个操作非常简洁:
- 安装依赖包
pip install pandas beautifulsoup4 openpyxl
- 编写转换脚本
新建html_to_excel.py:
import pandas as pd from bs4 import BeautifulSoup # 替换成你的HTML报告路径 html_path = "./reports/protractor-report.html" # 输出Excel路径 excel_output = "./reports/test-results.xlsx" # 读取HTML文件 with open(html_path, 'r', encoding='utf-8') as file: soup = BeautifulSoup(file, 'html.parser') # 找到测试结果表格 - 同样要根据实际结构调整选择器 result_table = soup.find('table', class_='results-table') # 把表格转换成DataFrame df = pd.read_html(str(result_table))[0] # 保存为Excel文件(index=False是去掉自动生成的行索引) df.to_excel(excel_output, index=False) print(f"Excel文件已导出:{excel_output}")
- 运行脚本
python html_to_excel.py
方法三:手动导出(适合少量报告,快速操作)
如果只是偶尔处理一两份报告,手动复制粘贴最省事:
- 用浏览器打开你的HTML报告,找到测试结果的表格区域
- 按住鼠标拖选整个表格(或者先按
Ctrl+A全选,再调整只保留表格内容) - 按
Ctrl+C复制 - 打开Excel,选中任意空白单元格,按
Ctrl+V粘贴 - 调整列宽、格式后,保存文件即可
额外提示
- 如果你的报告里包含截图,脚本中可以提取截图的本地路径或链接,添加到Excel的单独列中,方便后续直接查看截图。
- 要是需要批量处理多个HTML报告,可以在脚本里添加循环逻辑,遍历指定文件夹下的所有HTML文件,合并数据到同一个Excel或者生成单独的文件。
内容的提问来源于stack exchange,提问作者fullStackAspirant
相关产品推荐
相关产品推荐

