目录
最近几周的测试工作中,有一项内容是需要不断地从界面上获取信息,所以我研究了一下 “ 利用接口先将信息获取下来,然后将信息输出到表格里 ” 的方法。
一、脚本结构
脚本的结构非常简单,一个config.yaml文件存放接口信息,一个writeInfo.py文件负责界面的登陆,实时信息的获取和数据的记录。
二、使用的模块
获取信息:requests
配置文件:yaml
读取表格:xlrd
写入表格:xlwt
追加写入表格:xlutils
三、脚本实现
1、实时信息的获取
实时信息获取利用requests库就可以完成。主要是需要知道这些操作使用的接口url、请求的方法、需要的参数等等。
import yaml
import requests
def getInfo(login_cookie):
"""获取信息"""
# 首先打开yaml文件,因为接口信息我都存到了里面
file = open('config.yaml', encoding='utf-8')
res = yaml.load(file, Loader=yaml.FullLoader)
# 从yaml文件中获取接口信息
url = res['getInfo_url']
header = res['getInfo_headers']
cookie = login_cookie()
info = {
"count": 15,
"page": 1,
"index": 0
}
# 发送get请求,获取需要的信息
response = requests.get(url, params=info, headers=header, verify=False, cookies=cookie).json()
jobName = response['responseData']['data']['jobName'])
speed = response['responseData']['data']['speed'])
status = response['responseData']['data']['Status']
return jobName, status, speed
2、数据的记录
数据记录部分我是利用python xlrd xlwt xlutils模块,将获取到的数据存入excel表格中的。好处是易读,再加上用excel进行求和、求平均值也非常方便。
import xlrd
import xlwt
from xlutils.copy import copy
from time import sleep
def writeInfo(login_cookie, getInfo):
"""数据记录"""
# 首先创建一个新的表格
workbook = xlwt.Workbook()
sheet = workbook.add_sheet("数据记录")
workbook.save("record.xls")
jobName, status, speed = getInfo(login_cookie)
# 追加写入数据
while status == 4:
jobName, status, speed = getInfo(login_cookie)
# 读取原表格
workbook = xlrd.open_workbook("record.xls")
# 获取原表格第一个sheet的名字(我这里只有1个sheet)
all_sheet = workbook.sheet_names()
first_sheet = workbook.sheet_by_name(all_sheet[0])
# 获取原表格第一个sheet一写入数据的行数
rows = first_sheet.nrows
# 拷贝新的excel,并从rows行开始追加写入
new_workbook = copy(workbook)
new_sheet = new_workbook.get_sheet(0)
new_sheet.write(rows, 0, jobName)
new_sheet.write(rows, 1, status)
new_sheet.write(rows, 2, speed)
new_workbook.save("record.xls")
# 每5秒循环一次
sleep(5)