python读取apifox测试报告中接口信息

背景

使用apifox进行了接口测试,但是没有办法对两次的接口测试响应时间进行对比,因为apifox的测试报告是html格式的文件,所以可以读取html,提取出接口信息。

接口报告如下:

python读取apifox测试报告中接口信息_第1张图片

解决思路

语言:python

1、读取html文件内容

2、使用规则提取出接口标题和耗时

3、将结果写入excel

其中第1和第3都比较简单,重点是第2个步骤。

按照规则提取信息有很多可以用的方法,学过爬虫知识的会知道,如beautifulsoup、正则、xpath等方法,都可以从html中提取信息。

我也是按照这三种方法的顺序去写的,但是发现前两种都无法解决问题。

对于平均耗时来说,它的标签是div class="col-md-8",这个class不是唯一的,用正则提取又会读取到多余的信息,最后用了xpath,发现还是xpath好用,因为可以唯一定位到元素。

采用如下定位,可以找到同时符合class值和包含字符串ms中s的元素。(也可以是ms因为有的响应时间是s所以用了秒s)

//div[@class='col-md-8' and contains(text(),'s')]/text()

源码

import openpyxl

with open(r'D:\接口测试\优化后10-1apifox-reports-2023-04-04-10-58-02.html',encoding='utf-8') as f:
    content=f.readlines()
import lxml.html
selector=lxml.html.fromstring(str(content))
title=selector.xpath('//h5[@class="card-header"]/text()')

time=selector.xpath("//div[@class='col-md-8' and contains(text(),'s')]/text()")
time=time[2:]
filename = "result1.xlsx"
wb = openpyxl.Workbook()  # 创建工作簿对象
ws = wb['Sheet']  # 创建子表
ws.append(['title','time' ])  # 添加表头

for i in range(len(title)):
    d = title[i], time[i]
    ws.append(d)

wb.save(filename)

你可能感兴趣的:(#,爬虫,python)