You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 00:09:00