在講這一章之前,我首先要介紹一下XSL是什麼.
- XSL ---- 簡單的說就是一個模版文件,他可以和HTML中的標記一起使用並用來設置格式
在大致瞭解了XSL後,我們就可以開始這一章的內容,首先大家都知道平時當我們跑完QTP腳本後,QTP都會生成一個test results
在這個結果頁面裏我們可以進入FILE-->EXPORT REPORT
這裏有一個文件類型,我們就選擇HTML,然後在EXPORT FORMAT這裏我們就暫時先不管,先選擇short,然後我們點擊OK,就可以生成一份非常漂亮的根據這個REPORT轉化的HTML文檔,但是如果每個腳本都這樣導出會顯得十分麻煩,因此我們需要想辦法把這一步驟進行自動化,方法有兩種:
- 修改註冊表
如果QTP是9.2版本的話可以直接修改註冊表裏的值
進入HKLM->SOFTWARE->Mercury Interactive->QuickTest Professional->Logger->Media->Log
把ACTIVE的屬性改成1,默認爲0
關閉註冊表,重新運行腳本後,我們就可以在腳本文件夾裏找到HTML格式的結果文件
- 使用XSL模版文件聯合XML結果文件輸出HTML
這個方法是我們今天需要講的重點,首先我們進入到QTP安裝路徑下的DAT目錄,我們可以看到這兩個XSL文件,是不是很眼熟,沒錯,就是我們剛纔在做導出HTML時的EXPORT FORMAT欄中的兩種導出方式,最後一項是自定義XSL導出方式,其實QTP的這兩種導出方式就是依靠這兩個XSL的模版文件。
接下來這段腳本是我在SQA上找到的一段代碼,我把它拿來並進行了改寫,加入了對中文的支持,原來HTML都是不支持中文的,顯示時直接是亂碼,這裏我直接用了REPLACE替代函數來把字符集更換成了GB2312,這樣我們生成的HTML就可以顯示中文了。
- 'QTP的結果文件RES中的XML文件
- sResultsXML = "C:/Documents and Settings/Administrator/桌面/Test1/Res3/Report/Results.xml"
- '需要的模版文件XSL
- sDetailedXSL = "D:/Program Files/HP/QuickTest Professional/dat/PDetails.xsl"
- '調用轉換函數輸出HTML
- ApplyXSL sResultsXML, sDetailedXSL, "c:/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
初始化響應的參數並運行以上代碼後,我們可以看到在C盤中有個tt.html,先不急着打開,我們先把DAT目錄下的Presults.css文件拷貝到tt.html的同級目錄下,然後我們就可以打開了,看~~是不是很漂亮
總結:
其實我們如果對XSL熟悉的話,完全可以自己寫一個自定義的模版出來,並通過此文件來生成我們自己想要的HTML格式,我們可以看到在QTP自帶的這兩個xsl文件中都有導入另一個PStringTable.xsl文件,此文件就是儲存我們運行完成的QTP結果的參數值的,感興趣的朋友可以自己研究一下~嘗試來做一個屬於你自己的REPORT.
- Pshort.xsl中的導入PStringTable.xsl
- PStringTable.xsl中的一些常用參數值
下面是具體的實例,親測 可用.
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