测试交流天地

用QTP调用外部vbs读写XML的例子(一)

上一篇 / 下一篇  2011-07-24 09:49:01 / 个人分类:QTP

目前,企业中对XML的应用越来越广泛,作为自动化测试的测试工程师,也应该掌握XML的读写操作。
以下我使用XML DOM技术演示一个例子,用以读取XML指定节点的节点内容值。
读取函数原型 GetXml strXmlPath,nodeName
这个函数的第一个参数表示xml文件所在路径,第二个参数表示希望获取到的xml节点名,请结合下列例子看
首先,新建一个vbs文件(取个名字叫readXml.vbs),输入代码
  1. '==================================================================
  2. '   Author  : songfun
  3. '
  4. '  Description :  Read XML
  5. '==================================================================
  6. Dim strXML

  7. GetXml "c:\search.xml","TestResult"  '这个函数的第一个参数表示xml文件所在路径,第二个参数表示希望获取到的xml节点名,请结合下列例子看
  8. MsgBox strXML


  9. Function GetXml (ByVal strXmlFilePath,ByVal xmlNodeName)
  10.         Dim xmlDoc,xmlRoot
  11.        
  12.         Set xmlDoc = CreateObject("Microsoft.XMLDOM") '创建XML DOM对象
  13.         xmlDoc.async = False  '控制加载模式为同步模式(xml树加载完毕后再执行后续代码)
  14.         xmlDoc.load strXmlFilePath        '载入xml文件
  15.         If xmlDoc.parseError.errorCode <> 0 Then
  16.                 MsgBox "XML文件格式不对,原因是:" & Chr(13) &  xmlDoc.parseError.reason
  17.                 Exit Function               
  18.         End If
  19.         Set xmlRoot = xmlDoc.documentElement       
  20.         xmlRecursion xmlRoot,xmlNodeName        '调用xml递归函数传入指定的根和节点名       
  21.         GetXml = True 'xmlRecursion (xmlRoot)
  22.        
  23. End Function

  24. Function xmlRecursion(byval xmlNode,byval strNodeName)
  25.         If xmlNode.nodeName = strNodeName And xmlNode.hasChildNodes Then
  26.                 If  xmlNode.childNodes.item(0).nodeName = "#text" Then
  27.                         strXML = strXML & xmlNode.nodeName & ":" & xmlNode.childNodes.item(0).nodeValue & Chr(13)                                               
  28.                 End If               
  29.         End If                       
  30.         If xmlNode.hasChildNodes Then
  31.                 For Each childNodeItem In xmlNode.ChildNodes
  32.                         If childNodeItem.hasChildNodes Then
  33.                                 xmlRecursion childNodeItem,strNodeName                               
  34.                         End If                       
  35.                 Next
  36.         End If       
  37. End Function
复制代码


接着,自己构造一个xml文件(取个名字叫search.xml),如:

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

  2. <ROOT>
  3.         <TestCase>
  4.                 <TestNumberOne>1</TestNumberOne>
  5.                 <TestNumberTwo>2</TestNumberTwo>
  6.                 <TestNumberThree>+</TestNumberThree>
  7.                 <TestResult>3</TestResult>
  8.         </TestCase>
  9.         <TestCase>
  10.                 <TestNumberOne>3</TestNumberOne>
  11.                 <TestNumberTwo>2</TestNumberTwo>
  12.                 <TestNumberThree>-</TestNumberThree>
  13.                 <TestResult>1</TestResult>
  14.         </TestCase>
  15.         <TestCase>
  16.                 <TestNumberOne>3</TestNumberOne>
  17.                 <TestNumberTwo>7</TestNumberTwo>
  18.                 <TestNumberThree>*</TestNumberThree>
  19.                 <TestResult>21</TestResult>
  20.         </TestCase>
  21.         <TestCase>
  22.                 <TestNumberOne>2</TestNumberOne>
  23.                 <TestNumberTwo>5</TestNumberTwo>
  24.                 <TestNumberThree>/</TestNumberThree>
  25.                 <TestResult>0.4</TestResult>
  26.         </TestCase>       
  27. </ROOT>
复制代码


然后,在QTP的expert view中调用刚才写的vbs文件:
executefile "c:\readXml.vbs"

点“Run”,就能看到这个效果了。
当然,如果你不用调用外部文件的方式,也可以,如下图。

[本帖最后由 songfun 于 2007-5-19 13:46 编辑]

qtpxml.JPG(132.46 KB)

qtpxml.JPG


TAG:

 

评分:0

我来说两句

日历

« 2024-03-25  
     12
3456789
10111213141516
17181920212223
24252627282930
31      

数据统计

  • 访问量: 25848
  • 日志数: 25
  • 图片数: 2
  • 文件数: 12
  • 建立时间: 2007-08-23
  • 更新时间: 2013-12-03

RSS订阅

Open Toolbar