如何用QTP調用外部vbs讀寫XML

發表于:2009-05-09來源:作者:點擊數: 標簽:qtpQTPxmlXMLvbs
目前,企業中對XML的應用越來越廣泛,作為自動化 測試 的 測試工程師 ,也應該掌握XML的讀寫操作。 以下我使用XML DOM技術演示一個例子,用以讀取XML指定節點的節點內容值。 讀取函數原型 GetXml strXmlPath,nodeName .這個函數的第一個參數表示xml文件所在

目前,企業中對XML的應用越來越廣泛,作為自動化測試測試工程師,也應該掌握XML的讀寫操作。
以下我使用XML DOM技術演示一個例子,用以讀取XML指定節點的節點內容值。
    讀取函數原型 GetXml strXmlPath,nodeName .這個函數的第一個參數表示xml文件所在路徑,第二個參數表示希望獲取到的xml節點名,請結合下列例子看
    首先,新建一個vbs文件(取個名字叫readXml.vbs),輸入代碼:

 

 代  碼:  '==================================================================
'   Author  : songfun
'
'  Description :  Read XML
'==================================================================
Dim strXML

GetXml "c:\search.xml","TestResult"  '這個函數的第一個參數表示xml文件所在路徑,第二個參數表示希望獲取到的xml節點名,請結合下列例子看
MsgBox strXML


Function GetXml (ByVal strXmlFilePath,ByVal xmlNodeName)
        Dim xmlDoc,xmlRoot
       
        Set xmlDoc = CreateObject("Microsoft.XMLDOM") '創建XML DOM對象
        xmlDoc.async = False  '控制加載模式為同步模式(xml樹加載完畢后再執行后續代碼)
        xmlDoc.load strXmlFilePath        '載入xml文件
        If xmlDoc.parseError.errorCode <> 0 Then
                MsgBox "XML文件格式不對,原因是:" & Chr(13) &  xmlDoc.parseError.reason
                Exit Function               
        End If
        Set xmlRoot = xmlDoc.documentElement       
        xmlRecursion xmlRoot,xmlNodeName        '調用xml遞歸函數傳入指定的根和節點名       
        GetXml = True 'xmlRecursion (xmlRoot)
       
End Function

Function xmlRecursion(byval xmlNode,byval strNodeName)
        If xmlNode.nodeName = strNodeName And xmlNode.hasChildNodes Then
                If  xmlNode.childNodes.item(0).nodeName = "#text" Then
                        strXML = strXML & xmlNode.nodeName & ":" & xmlNode.childNodes.item(0).nodeValue & Chr(13)                                              
                End If               
        End If                       
        If xmlNode.hasChildNodes Then
                For Each childNodeItem In xmlNode.ChildNodes
                        If childNodeItem.hasChildNodes Then
                                xmlRecursion childNodeItem,strNodeName                              
                        End If                       
                Next
        End If       
End Function

    接著,自己構造一個xml文件(取個名字叫search.xml),如:

 代  碼:

 <?xml version="1.0" encoding="GB2312"?>

<ROOT>
        <TestCase>
                <TestNumberOne>1</TestNumberOne>
                <TestNumberTwo>2</TestNumberTwo>
                <TestNumberThree>+</TestNumberThree>
                <TestResult>3</TestResult>
        </TestCase>
        <TestCase>
                <TestNumberOne>3</TestNumberOne>
                <TestNumberTwo>2</TestNumberTwo>
                <TestNumberThree>-</TestNumberThree>
                <TestResult>1</TestResult>
        </TestCase>
        <TestCase>
                <TestNumberOne>3</TestNumberOne>
                <TestNumberTwo>7</TestNumberTwo>
                <TestNumberThree>*</TestNumberThree>
                <TestResult>21</TestResult>
        </TestCase>
        <TestCase>
                <TestNumberOne>2</TestNumberOne>
                <TestNumberTwo>5</TestNumberTwo>
                <TestNumberThree>/</TestNumberThree>
                <TestResult>0.4</TestResult>
        </TestCase>       
</ROOT>

 

然后,在QTP的expert view中調用剛才寫的vbs文件:
executefile "c:\readXml.vbs"

點“Run”,就能看到這個效果了。如圖:

 

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97