TestComplete如何从测试日志的Picture面板获取已捕获的截图
TestComplete日志截图获取方案
可以直接通过TestComplete内置的日志对象API获取对应截图,无需读取本地日志文件夹文件。
问题说明
你之前获取的DataType返回float是正常现象:TestComplete的日志数据类型枚举返回的是数值型常量,其中值为10时对应就是图片类型,不属于报错。
实现逻辑
- 遍历子日志项时,可直接用日志数据类型常量判断是否为图片类型日志
- 确认是图片日志后调用对应
Data集合的Value属性直接获取截图对象 - 将截图临时存储后传给fpdf插入PDF即可,也可根据需求调整为内存流操作避免写磁盘
修改后的代码示例
from fpdf import FPDF import tempfile import os logsCol = Project.Logs logItem = logsCol.LogItem[0] num = logItem.ChildCount th = 1 # 可按你原有需求调整行高参数 pdf = FPDF(unit='cm', format='A4') pdf.add_page() pdf.set_font("Arial", size=10) if num > 0: for i in range(0, num): child_item = logItem.Child[i] name = child_item.Name status = child_item.Status # 遍历查找图片类型的日志数据 has_picture = False pic_data = None for data_idx in range(child_item.DataCount): data_scheme = child_item.Data[data_idx].Scheme for scheme_child_idx in range(data_scheme.ChildCount): # 也可直接用Log.DataType.ltImage替换硬编码10,兼容性更好 if data_scheme.Child[scheme_child_idx].DataType == 10: has_picture = True pic_data = child_item.Data[data_idx].Value break if has_picture: break # 写入基础信息表格行 pdf.cell(3.7, 2*th, str(name), border=1) pdf.cell(3.7, 2*th, str(status), border=1) pdf.ln(2*th) # 存在截图则插入到PDF对应位置 if has_picture and pic_data: temp_pic = tempfile.NamedTemporaryFile(suffix='.png', delete=False) pic_data.SaveToFile(temp_pic.name) temp_pic.close() # 可按实际需求调整图片宽度、位置参数 pdf.image(temp_pic.name, x=1, w=15) pdf.ln(10) os.unlink(temp_pic.name) pdf.output('Path to exported log\\TestReport.pdf', 'F')
内容的提问来源于stack exchange,提问作者Areke
相关产品推荐
相关产品推荐

