`
ktc7000
  • 浏览: 35340 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

QTP操作xml文件方法

阅读更多
搜索1:
目前,企业中对XML的应用越来越广泛,作为自动化测试的测试工程师,也应该掌握XML的读写操作。
  以下我使用XML DOM技术演示一个例子,用以读取XML指定节点的节点内容值。
  读取函数原型 GetXml strXmlPath,nodeName
  这个函数的第一个参数表示xml文件所在路径,第二个参数表示希望获取到的xml节点名,请结合下列例子看
  首先,新建一个vbs文件(取个名字叫readXml.vbs),输入代码:
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

问题:
  haschildnodes()这个方法好奇怪,明明已经没有子节点了,却仍然返回true,
  比如<TestResult>1</TestResult>这个节点,它的childNodes.item(0).nodeName竟然是“#text”,但是根据例子来看TestResult已经没有子节点了阿
回答:
  因为在xml有一个特殊的“子节点”——文本节点。比如 <TestResult>100</TestResult>
  这个节点TestResult下并不是没有子节点,而是有一个文本节点,这个节点的nodeName就是“#text”,而nodeValue是100.如果是 <TestResult/> 这种节点的话,那么用hasChildNodes则返回False
遍历xml的代码:
Option Explicit
Dim xmlDoc,myErr,strXML
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.async = False
xmlDoc.load "c:calc1.xml"
If xmlDoc.parseError.errorCode <> 0 Then
   Set myErr = xmlDoc.parseError
   MsgBox("XML Loads Failed. " & myErr.reason)
Else
        Set rootNode = xmlDoc.documentElement
        Call rTravel(rootNode)
        MsgBox strXML
End If
Sub rTravel (rNode)
        Dim blnTwo,intTestCase,
        blnTwo = False
        iLen = rNode.childNodes.length
        If iLen > 0 Then
                For i = 0 To rNode.childNodes.length -1
                        Set child = rNode.childNodes.item(i)
                        Call rTravel(child)
                        childtext = child.nodeValue
                        strXML = strXML & childtext & chr(13)
                Next
        Else
                Exit Sub
        End If
End Sub

方法二:
Option Explicit
Dim xmlDoc,myErr,strXML
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.async = False
xmlDoc.load "c:calc1.xml"
If xmlDoc.parseError.errorCode <> 0 Then
   Set myErr = xmlDoc.parseError
   MsgBox("XML Loads Failed. " & myErr.reason)
Else
        Set rootNode = xmlDoc.documentElement
        Call rTravel(rootNode)
        MsgBox strXML
End If
Sub rTravel (rNode)
        Dim blnTwo,intTestCase,
        blnTwo = False
        iLen = rNode.childNodes.length
        If iLen > 0 Then
                For i = 0 To rNode.childNodes.length -1
                        Set child = rNode.childNodes.item(i)
                        Call rTravel(child)
                        childtext = child.nodeValue
                        strXML = strXML & childtext & chr(13)
                Next
        Else
                Exit Sub
        End If
End Sub




搜索2:
Dim filepath,xmlDoc,myErr,strXML,rootNode
filepath="c:\12.xml"
Set xmlDoc=CreateObject("Microsoft.XMLDOM")'创建一个xml对象
xmlDoc.async=False
xmlDoc.load filepath '加载xml文件
If xmlDoc.parseError.errorCode<>0 Then'返回错误信息
Set myErr=xmlDoc.parseError
MsgBox("XML Loads Faild."&myErr.reason)
Else
Set rootNode=xmlDoc.documentElement'设置根节点
Call rTravel(rootNode)'遍历节点
msgBox strXML
End If

Sub rTravel(rNode)
Dim blnTwo,intTestCase,iLen,i,child
blnTwo=False
iLen=rNode.childNodes.length'返回节点的子节点数目
If iLen>0 Then
For i=0 to rNode.childNodes.length-1
Set child=rNode.childNodes.item(i)'获取当前节点对象
Call rTravel(child)
childtext=child.nodeValue'获取节点的值
strXML=strXML & childtext & chr(13)'chr(13)回车符
Next
else
Exit Sub
End If
End Sub


另附搜索到的qtp_xml学习总结
分享到:
评论

相关推荐

    QTP的XML结果文件中读取数据,汇总写入EXCEL

    DOM 是一种解析 XML 的方法,允许程序或脚本动态访问和更新 XML 文档的结构。`xmlDoc.documentElement.SelectSingleNode(xmlNodeName)` 用于找到 XML 文件中的特定节点,并返回其文本内容。 代码中,XML 文件的路径...

    软件测试工具中QTP操作xml文件的方法及扩展QTP的.NET插件的问题

    qtpxml软件测试工具中QTP操作xml文件的方法及扩展QTP的.NET插件的问题目前,企业中对XML的应用越来越广泛,作为自动化测试的测试工程师,也应该掌握XML的读写操作。以下我使用XMLDOM技术演示一个例子,用以读取XML...

    QTP下基于XML+DP的关键字驱动DEMO.rar

    3. **DP的配置**:在QTP测试脚本中设置DP,指定XML文件路径和数据读取方式。 4. **关键词的使用**:如何在脚本中调用关键词,并将从XML文件中获取的数据作为参数传递。 5. **脚本的执行与结果验证**:运行脚本,观察...

    关于显示Flex在QTP中封装方法的步骤

    将XML文件路径添加到注册表中,QTP会读取其中的定义。 7. **录制和回放**:现在,你可以开始录制对Flex应用的操作。QTP应该能够识别Flex组件并生成相应的脚本。在回放时,QTP会调用之前编写的自定义库函数来执行...

    QTP缺失文件

    4. **msxml6.dll**:Microsoft XML Core Services(MSXML)的版本6,用于解析和操作XML文档。QTP在处理XML数据时会依赖这个组件,特别是在与Web服务或XML结构化的数据交互时。缺少msxml6.dll可能会导致QTP在处理XML...

    QTP测试计算器的小例子

    2. **对象库**:可能包含`.obj`或`.mlf`文件,用于存储计算器应用的对象及其属性,方便QTP识别和操作。 3. **测试套件/测试用例**:`.tst`或`.qt`文件,这些是QTP的测试组织结构,定义了测试的执行顺序和关联的脚本...

    QTP使用帮助大全(全中文帮助文档)

    XML格式允许用户自定义报告样式,通过解析XML文件,可以获取详细的测试数据,进行定制化的数据分析和报表生成。这部分内容有助于提升测试报告的可视化和可分析性。 学习这些文档,不仅能够帮助你掌握QTP的基本操作...

    QTP操作基本教程---入门级的好教程,以具体实例操作

    【QTP操作基本教程】是面向初学者的指导材料,主要涵盖了如何使用QTP(QuickTest Professional)进行自动化测试的基本步骤。QTP是一款由HP(现已被Micro Focus收购)开发的功能自动化测试工具,广泛应用于软件测试...

    精通QTP——自动化测试技术领航

    1.2 帮助文档(HELP)-QTP的说明书 1.3 录制与回放—QTP的开关 1.4 认清并请远离QTP的脚本录制模式 1.5 QTP精华—对象库(上)之基础攻略篇 1.6 对象库(下)之进阶编程篇 1.7 描述性编程(Descriptive ...

    QTP描述性编程技术集锦

    13. **XML参数化**:XML文件可以作为数据源,为测试提供灵活的数据结构。 14. **Oracle QTP**:QTP支持Oracle数据库,允许测试人员进行数据库层面的验证。 15. **对象库管理与合并**:有效管理对象库,包括对象的...

    QTP入门与实践QTP的背景知识、应用范围及基本功能介绍

    QTP以VBS(Visual Basic Script)作为内嵌语言,它是WinRunner的升级版,提供了一种更为直观和高效的自动化测试方法。QTP不仅仅是一款测试工具,还可以与HP的质量中心(QC)产品配合,实现业务过程测试(BPT)。 ##...

    QTP 技术集锦 学习QTP的好东东

    - **方法**: 如何使用 QTP 进行文件系统的操作。 - **示例**: 提供具体的使用示例。 #### 53. 对象同步 - **概念**: 对象同步在 QTP 中的作用。 - **实现**: 如何实现对象同步。 #### 54. 正则表达式应用模板 - **...

    【QTP】QTP基础代码.pdf

    在执行某些特定行的操作后,可能需要将当前数据表中的所有数据导出到文件中。例如,在数据表的第五行执行特定操作后,导出整个数据表。 ```vbscript Dim row row = dataTable.getCurrentRow If row = "5" Then ...

    QTP对标准web对象的测试

    综上,QTP测试标准Web对象时,涉及了DOM操作、Web控件的属性访问、Browser对象方法的使用、页面元素计数、Frame对象以及Image对象的验证等,这些都是QTP自动化测试的重要组成部分,能够有效地实现Web应用的自动化...

    QTP 9.2自动化测试工具介绍

    此外,QTP 还支持环境变量,这些变量在整个测试中可被所有 Action 共享,其中用户定义的环境变量甚至可以关联 XML 文件,实现跨测试的变量共享。QTP 还允许引用外部的 VBS 代码库,增强了脚本的复用性和扩展性。 总...

Global site tag (gtag.js) - Google Analytics