XML聯合XSL輸出html report

 在講這一章之前,我首先要介紹一下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就可以顯示中文了。

  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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章