XML联合XSL输出html report

4 篇文章 0 订阅
3 篇文章 0 订阅

 在讲这一章之前,我首先要介绍一下XSL是什么.

 

  • XSL  ----  简单的说就是一个模版文件,他可以和HTML中的标记一起使用并用来设置格式

在大致了解了XSL后,我们就可以开始这一章的内容,首先大家都知道平时当我们跑完QTP脚本后,QTP都会生成一个test results

 

 

1

 

 

在这个结果页面里我们可以进入FILE-->EXPORT REPORT

 

 

2

 

 

这里有一个文件类型,我们就选择HTML,然后在EXPORT FORMAT这里我们就暂时先不管,先选择short,然后我们点击OK,就可以生成一份非常漂亮的根据这个REPORT转化的HTML文档,但是如果每个脚本都这样导出会显得十分麻烦,因此我们需要想办法把这一步骤进行自动化,方法有两种:

 

  • 修改注册表

 

    如果QTP是9.2版本的话可以直接修改注册表里的值

 

进入HKLM->SOFTWARE->Mercury Interactive->QuickTest Professional->Logger->Media->Log

把ACTIVE的属性改成1,默认为0

 

3

 

 

关闭注册表,重新运行脚本后,我们就可以在脚本文件夹里找到HTML格式的结果文件

 

 

  • 使用XSL模版文件联合XML结果文件输出HTML

这个方法是我们今天需要讲的重点,首先我们进入到QTP安装路径下的DAT目录,我们可以看到这两个XSL文件,是不是很眼熟,没错,就是我们刚才在做导出HTML时的EXPORT FORMAT栏中的两种导出方式,最后一项是自定义XSL导出方式,其实QTP的这两种导出方式就是依靠这两个XSL的模版文件。

 

4

 

 

接下来这段脚本是我在SQA上找到的一段代码,我把它拿来并进行了改写,加入了对中文的支持,原来HTML都是不支持中文的,显示时直接是乱码,这里我直接用了REPLACE替代函数来把字符集更换成了GB2312,这样我们生成的HTML就可以显示中文了。

[vb]  view plain  copy
 print ?
  1. 'QTP的结果文件RES中的XML文件  
  2. sResultsXML = "C:/Documents and Settings/Administrator/桌面/Test1/Res3/Report/Results.xml"  
  3.    
  4. '需要的模版文件XSL  
  5. sDetailedXSL = "D:/Program Files/HP/QuickTest Professional/dat/PDetails.xsl"  
  6.    
  7. '调用转换函数输出HTML  
  8. ApplyXSL sResultsXML, sDetailedXSL, "c:/tt.html"  
  9.    
  10. '转换函数  
  11. Public Function ApplyXSL(ByVal inputXML, ByVal inputXSL, ByVal outputFile)  
  12.  sXMLLib = "MSXML.DOMDocument"  
  13.  Set xmlDoc = CreateObject(sXMLLib)  
  14.  Set xslDoc = CreateObject(sXMLLib)  
  15.    
  16.  xmlDoc.async = False  
  17.  xslDoc.async = False  
  18.    
  19.  xslDoc.load inputXSL  
  20.  xmlDoc.load inputXML  
  21.   
  22.  outputText = xmlDoc.transformNode(xslDoc.documentElement)  
  23.  outputText=replace(outputText,"UTF-16","gb2312")  
  24.  Set FSO = CreateObject("Scripting.FileSystemObject")  
  25.  Set outFile = FSO.CreateTextFile(outputFile,True)  
  26.  outFile.Write outputText  
  27.  outFile.Close  
  28.   
  29.  Set outFile = Nothing  
  30.  Set FSO = Nothing  
  31.  Set xmlDoc = Nothing  
  32.  Set xslDoc = Nothing  
  33.  Set xmlResults = Nothing  
  34. End Function  

 


 初始化响应的参数并运行以上代码后,我们可以看到在C盘中有个tt.html,先不急着打开,我们先把DAT目录下的Presults.css文件拷贝到tt.html的同级目录下,然后我们就可以打开了,看~~是不是很漂亮 

 

5

 

 

总结:

 

     其实我们如果对XSL熟悉的话,完全可以自己写一个自定义的模版出来,并通过此文件来生成我们自己想要的HTML格式,我们可以看到在QTP自带的这两个xsl文件中都有导入另一个PStringTable.xsl文件,此文件就是储存我们运行完成的QTP结果的参数值的,感兴趣的朋友可以自己研究一下~尝试来做一个属于你自己的REPORT.

 

  • Pshort.xsl中的导入PStringTable.xsl

6

 

  • PStringTable.xsl中的一些常用参数值

7





下面是具体的实例,亲测 可用.

sResultsXML = "F:/moving/flight/Script/MasterDriver/Res52/Report/Results.xml"

sDetailedXSL = "D:/moving_tool/qtp11/installation/dat/PShort.xsl"


ApplyXSL sResultsXML,sDetailedXSL,"C:/Users/zjjwu/Desktop/tt.html"


Public Function ApplyXSL(ByVal inputXML,ByVal inputXSL,Byval outputFile)
   sXMLLib = "MSXML.DOMDocument"
   Set xmlDoc = CreateObject(sXMLLib)
   Set xslDoc = CreateObject(sXMLLib)


xmlDoc.async = False
xslDoc.async = False


xslDoc.load inputXSL
xmlDoc.load inputXML


outputText = xmlDoc.transformNode(xslDoc.documentElement)
outputText=replace(outputText,"UTF-16","gb2312")
Set FSO = CreateObject("Scripting.FileSystemObject")
Set outFile = FSO.CreateTextFile(outputFile,True)
outFile.Write outputText
outFile.Close


Set outFile = Nothing
Set FSO = Nothing
Set xmlDoc = Nothing
Set xslDoc = Nothing
Set xmlResults = Nothing



End Function


exittest
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值