51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 21657|回复: 35
打印 上一主题 下一主题

[原创] 用QTP调用外部vbs读写XML的例子(一)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-5-19 13:32:18 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
目前,企业中对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 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情

    2015-4-7 16:30
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    36#
    发表于 2013-5-28 15:14:38 | 只看该作者
    非常不错!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    35#
    发表于 2012-8-3 10:57:03 | 只看该作者
    学习了。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    34#
    发表于 2012-1-12 09:28:56 | 只看该作者
    学习了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    33#
    发表于 2011-12-1 23:03:02 | 只看该作者
    Mark!QTP读写XML,,,,,,学习无止境啊!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    32#
    发表于 2011-1-6 13:56:43 | 只看该作者
    学习了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    31#
    发表于 2010-11-23 11:04:00 | 只看该作者
    请问高手,这个就是读的,取出来用是怎么实现的?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    30#
    发表于 2010-11-17 13:40:04 | 只看该作者
    回复 1# songfun
    问一下,我的这个语句有什么错误?
    “root.childNodes(0).childNodes(10).item(3).nodeName”
    运行说是不支持,请高手帮忙
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    29#
    发表于 2010-8-11 17:04:47 | 只看该作者
    还没接触XML,学习了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    28#
    发表于 2010-7-4 16:40:17 | 只看该作者

    xml标记修改

    宋老师如何修改xml标记的值啊
    如:<Cells L="DpCells">
                <Cell>FT Historian SE</Cell>
                <Cell>SOFTWARE\Rockwell Software\FTHistorian\last Version</Cell>
                <Cell />
                <Cell>2.20.00.0029</Cell>
              </Cells>
    我要修改:<Cell>2.20.00.0029</Cell>用一个变量来代替2.20.00.0029
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    27#
    发表于 2009-12-25 18:36:04 | 只看该作者
    xml成数据交换的主流啦
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    26#
    发表于 2009-12-12 12:40:45 | 只看该作者
    精华帖,很有借鉴意义~~~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    25#
    发表于 2009-4-27 22:47:40 | 只看该作者
    留个名回来漫漫看
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    24#
    发表于 2009-2-15 14:13:07 | 只看该作者
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    23#
    发表于 2008-11-29 16:12:58 | 只看该作者
    这个写的非常好 学习了 哈哈  支持了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    22#
    发表于 2008-11-20 10:02:41 | 只看该作者
    写xml的呢?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    21#
    发表于 2008-9-10 10:26:20 | 只看该作者

    按照楼主这样做,弹出对话框:xml文件格式不对,原因是:不支持从当前编码到指定编码的切换

    [ 本帖最后由 zhaoping 于 2008-9-10 10:28 编辑 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    20#
    发表于 2008-8-11 15:42:10 | 只看该作者
    强帖留名啊。呵呵。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    19#
    发表于 2007-8-29 10:01:50 | 只看该作者
    斑竹辛苦
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    18#
    发表于 2007-8-29 10:01:31 | 只看该作者
    顶了
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-12 03:02 , Processed in 0.081889 second(s), 30 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表