• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

如何用QTP调用外部vbs读写XML

发布: 2009-5-09 23:18 | 作者: Cheers.Lee | 来源: 测试时代采编 | 查看: 482次 | 进入软件测试论坛讨论

领测软件测试网

目前,企业中对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”,就能看到这个效果了。如图:

 

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

TAG: qtp QTP vbs xml XML


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网