python爬虫MeterSphere平台执行报告使用实战
作者:友友测试猿,小蔡
这篇文章主要为大家介绍了python爬虫MeterSphere平台执行报告使用实战,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
一、场景下API信息获取
1、通过商业id已获取到每个场景下id,我们通过场景id进行访问当前场景下的API,每个场景下面都会包含很多api,这时我们通过遍历进行获取。
2、获取到数据还是通过正则进行过滤处理。
#遍历每个场景下API for TestReporTGGet in range(0, TestReporTgCount001): TestReporTGName = TestReporTG[TestReporTGGet] # print(TestReporTGName,"类型是:",type(TestReporTGName)) # 特殊符号过滤 TestReporTGNameFiltration = re.sub('['!"#$%&\'()*+,./:;<=>?@,。?★、…【】《》?“”‘'![\\]^_`{|}~\s]+', "", TestReporTGName) # 特殊\斜杆过滤 TestReporTGNameFiltration01 = re.sub(r'\\', "", TestReporTGNameFiltration) # 获取响应体url ResponseUrl = "http://ms.***.*****:****/api/scenario/report/selectReportContent/" + TestReporTGNameFiltration01 print("场景下节点地址:"+ResponseUrl) ResponseUrlResp = requests.get(url=ResponseUrl, headers=TestReportHeaders) ResponseUrlResp.encoding = "utf-8" #print(ResponseUrlResp.text) ResponseUrlRespGet = ResponseUrlResp.text # 获取每个流程节点名字,进行过滤 TestResponseResp = re.findall('","name":"(.+?)",', ResponseUrlRespGet) TestResponseRespGet=str(TestResponseResp) TestResponseRespGetFiltration=re.sub('[a-zA-Z0-9'!"#$%&\'()*+,-./:;<=>?@,。?★、…【】《》?“”‘'![\\]^_`{|}~\s]+', "", TestResponseRespGet) print("根节点处理报告名称:" + TestResponseRespGetFiltration) #获取根节点成功或失败 RootNodeSucceed=re.findall('"pass":(.+?)}]}}}',ResponseUrlRespGet) RootNodeSucceedGet=str(RootNodeSucceed) print("根节点失败或成功状态标识:"+RootNodeSucceedGet) #定义局部变量,状态转译使用 #if #获取根节点返参数据 #ReturnParameter=re.findall('"vars":"(.+?)}]}}}',ResponseUrlRespGet) #ReturnParameter=re.findall('"data":(.+?)}}}',ResponseUrlRespGet) #ReturnParameterGet=str(ReturnParameter) # 获取根节点返参数据 ReturnParameter=re.findall('"body":"{(.+?)]}}}',ResponseUrlRespGet) ReturnParameterGet=str(ReturnParameter) ReturnParameterGettest=re.sub(r'\\', "", ReturnParameterGet) print("过滤后的报文字段"+ReturnParameterGettest) #print("长度:" + len(ReturnParameterGet)) Namenge_list = list(ReturnParameterGet) #print("长度:" + len(Namenge_list)) is_contain_ch29 = '"error":0' in ResponseUrlRespGet # 获取根节点状态码 # RootState=re.findall('"responseCode":"(.+?)","',ResponseUrlRespGet) # RootStateGet=str(RootState) # print("根节点状态码;"+RootStateGet) #获取投保单号 InsureGain=re.findall('proposalNo:(.+?)nqueryCode',ResponseUrlRespGet) InsureGainGet=str(InsureGain) InsureGainGetDispose=re.sub('['!"#$%&\'()*+,-./:;<=>?@,。?★、…【】《》?“”‘'![\\]^_`{|}~\s]+', "",InsureGainGet) InsureGainGetDispose01=re.sub(r'\\', "",InsureGainGetDispose) print("投保单号:",InsureGainGetDispose01) #获取报价单号 PriceSheet=re.findall('quotationNo:(.+?)nquotationNo1:',ResponseUrlRespGet) PriceSheetGet=str(PriceSheet) PriceSheetGetDispose=re.sub('['!"#$%&\'()*+,-./:;<=>?@,。?★、…【】《》?“”‘'![\\]^_`{|}~\s]+', "",PriceSheetGet) PriceSheetGetDispose01=re.sub(r'\\', "",PriceSheetGetDispose) print("报价单号:",PriceSheetGetDispose01) #获取orderMessageList orderMessageList=re.findall('"assertions":(.+?)"pass":true',ResponseUrlRespGet) orderMessageListGet=str(orderMessageList) print("获取orderMessageList:",orderMessageListGet) print("===============================================================================") #print("根节点返参:"+ReturnParameterGet) print("是否为:",is_contain_ch29) print("根节点的接口:"+ReportParticularsUrl) print("===============================================================================")
二、前期爬虫工作已完成后我们主要进行存储处理
1、读取前面自动生成表格,进行定位。
2、 is_contain_ch29 = '"error":0' in ResponseUrlRespGet 主要判断此节点执行结果为成功还是失败,这里可以通过ms里面设定成功值进行去判断。
# 读取原表格 workbook = xlrd.open_workbook("autoinsurancereport.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(0, 0, "场景") # 场景 new_sheet.write(0, 1, "报告名称") # 报告名称 new_sheet.write(0, 2, "接口") # 接口 new_sheet.write(0, 3, "返回状态码") # 返回状态码 new_sheet.write(0, 4, "投保单号") # 投保单号 new_sheet.write(0, 5, "报价单号") # 报价单号 new_sheet.write(0, 6, "状态") # 报价单号 new_sheet.write(0, 7, "orderMessageList") # 报价单号 new_sheet.write(0, 8, "路径") # 路径 new_sheet.write(0, 9, "文档记录时间") # 报价单号 # (行,列,值) new_sheet.write(rows, 0, GetSceneNameGain) # 场景 new_sheet.write(rows, 1, TestResponseRespGetFiltration) # 报告名称 new_sheet.write(rows, 2, ReportParticularsUrl) # 接口 new_sheet.write(rows, 3, GetStateGain) # 返回状态码 new_sheet.write(rows, 4, InsureGainGetDispose01) # 投保单号 new_sheet.write(rows, 5, PriceSheetGetDispose01) # 报价单号 if is_contain_ch29 == True: new_sheet.write(rows, 6, "成功") # 状态 new_sheet.write(rows, 8, " ") # 返回报文 else: print("ReturnParameterGettest长度为:",len(ReturnParameterGettest)) if len(ReturnParameterGettest)<=32000: new_sheet.write(rows, 8, ReturnParameterGettest) # 返回报文 else: new_sheet.write(rows, 8, "执行失败,报文较长,文档无法进行存储") # 返回报文 new_sheet.write(rows, 6, "失败或未执行") # 状态 new_sheet.write(rows, 7, orderMessageListGet) # orderMessageList new_sheet.write(rows, 9, str(current_time)) # 当前系统时间 new_workbook.save("autoinsurancereport.xls")
上一篇《使用python爬虫MeterSphere平台执行报告篇(二)》
以上就是python爬虫MeterSphere平台执行报告使用实战的详细内容,更多关于python爬虫MeterSphere的资料请关注脚本之家其它相关文章!