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

上一篇 / 下一篇  2007-06-18 16:07:48 / 个人分类:QTP

目前,企业中对XML的应用越来越广泛,作为自动化测试的测试工程师,也应该掌握XML的读写操作。51Testing软件测试网(zSe W6P{
以下我使用XML DOM技术演示一个例子,用以读取XML指定节点的节点内容值。
i j mpR0读取函数原型 GetXml strXmlPath,nodeName
D4k6s,Q]q0这个函数的第一个参数表示xml文件所在路径,第二个参数表示希望获取到的xml节点名,请结合下列例子看
5UUnc;g0首先,新建一个vbs文件(取个名字叫readXml.vbs),输入代码:

CODE:51Testing软件测试网'c g*H6fA!L9u+J

'==================================================================51Testing软件测试网 T?0[\8ri&O)[:s!O
' Author : songfun51Testing软件测试网DZ0z:KY;oA
'
Di @J,A0' Descrīption : Read XML51Testing软件测试网3]G(b` d H l?"{+W
'==================================================================51Testing软件测试网?e!c;N H`,^A
Dim strXML
:L SB#HU^T2[0
2rp2c#q yt'gQ ^0GetXml "c:\search.xml","TestResult" '这个函数的第一个参数表示xml文件所在路径,第二个参数表示希望获取到的xml节点名,请结合下列例子看51Testing软件测试网D*Y-BE,b7va)Q:N
MsgBox strXML
&c?w8M Y0
*Q m*s2Jq~`Q051Testing软件测试网HWH)s |;Hs7r,p
Function GetXml (ByVal strXmlFilePath,ByVal xmlNodeName)51Testing软件测试网3F'q!{/NI6w`
Dim xmlDoc,xmlRoot51Testing软件测试网|BS\|(m

5oZ/nYQ+N.oN0Set xmlDoc = CreateObject("Microsoft.XMLDOM") '创建XML DOM对象51Testing软件测试网&u\.~8m4G@e
xmlDoc.async = False '控制加载模式为同步模式(xml树加载完毕后再执行后续代码)51Testing软件测试网a+w7^@9Tb.U
xmlDoc.load strXmlFilePath '载入xml文件
H nkOS0If xmlDoc.parseError.errorCode <> 0 Then
Z:Ip3FV&GJ Te0MsgBox "XML文件格式不对,原因是:" & Chr(13) & xmlDoc.parseError.reason51Testing软件测试网s7\+pN0{R_Y
Exit Function51Testing软件测试网I0`;i2t2cge
End If51Testing软件测试网Ky y4s GT0D5Je
Set xmlRoot = xmlDoc.documentElement
ILg#E'[0xmlRecursion xmlRoot,xmlNodeName '调用xml递归函数传入指定的根和节点名51Testing软件测试网v%{'{4{pM fY
GetXml = True 'xmlRecursion (xmlRoot)
0H-c2Y;zO^pZ051Testing软件测试网]B6Cc,w N? G;]w
End Function
Q3r |4rl0P,KSB:m051Testing软件测试网b6e | yb!h&|&X
Function xmlRecursion(byval xmlNode,byval strNodeName)
lX qF-CU i,A4L-_0If xmlNode.nodeName = strNodeName And xmlNode.hasChildNodes Then
U%kv2C&G%xo i0If xmlNode.childNodes.item(0).nodeName = "#text" Then
*VF'w)|9t]/z8J0strXML = strXML & xmlNode.nodeName & ":" & xmlNode.childNodes.item(0).nodeValue & Chr(13)
4z0{rP~dX0End If51Testing软件测试网v+M:n}z_h6b1g
End If
NXe0a2Ap0If xmlNode.hasChildNodes Then
(Ti0Y4u1o9@0For Each childNodeItem In xmlNode.ChildNodes51Testing软件测试网1pF"e:]wd'z
If childNodeItem.hasChildNodes Then51Testing软件测试网mMYd4p v
xmlRecursion childNodeItem,strNodeName
Y3_|,It5tB ip0End If
s k'q|%x)SQ(w0Next
8G|[8v.t0End If
0X~\q!\:Xb@0End Function
接着,自己构造一个xml文件(取个名字叫search.xml),如:

CODE:

f`/jV9L FhB0<?xml version="1.0" encoding="GB2312"?>51Testing软件测试网i'En `sc'u.C)hi9q

/K _6l r*J-Z.`0<ROOT>
sGEl,J0<TestCase>51Testing软件测试网#f"\!RC-|9?}
<TestNumberOne>1</TestNumberOne>51Testing软件测试网&j/Z b4T4|
<TestNumberTwo>2</TestNumberTwo>
Y$D${&x'We0<TestNumberThree>+</TestNumberThree>
5} YcN$?#Q0<TestResult>3</TestResult>
sO r#pXg IL^?5c0</TestCase>
u\9elEh.gB3u2K+ld0<TestCase>51Testing软件测试网!nxz8^xsR]|
<TestNumberOne>3</TestNumberOne>
W2`'cM5E8g+~f_0<TestNumberTwo>2</TestNumberTwo>
'O{+zv i3g-L0<TestNumberThree>-</TestNumberThree>51Testing软件测试网;@V'xdG!zMO$@:g
<TestResult>1</TestResult>51Testing软件测试网$D6hqL}2vOJ-O,X{
</TestCase>51Testing软件测试网W;ub@:B
<TestCase>51Testing软件测试网aR/M%M A-sNR'K5t
<TestNumberOne>3</TestNumberOne>51Testing软件测试网Fa%m^;W9l
<TestNumberTwo>7</TestNumberTwo>
4N%eq5[ r;k$E0<TestNumberThree>*</TestNumberThree>51Testing软件测试网 p%V^z&c
<TestResult>21</TestResult>
r'\^.ad h ]0</TestCase>51Testing软件测试网C @U%Y1c
<TestCase>51Testing软件测试网MF(E-xQ$H,x6S
<TestNumberOne>2</TestNumberOne>
4SD0S$G%i+I2J0<TestNumberTwo>5</TestNumberTwo>51Testing软件测试网(ja5O4W.VbjQ6b)z
<TestNumberThree>/</TestNumberThree>51Testing软件测试网)zk!w)V1Yh3W5Z G-v
<TestResult>0.4</TestResult>
c.v`a-mF0</TestCase>51Testing软件测试网 ?7cy;{+yks
</ROOT>
然后,在QTP的expert view中调用刚才写的vbs文件:51Testing软件测试网2Fs;c5e+?1Nz S
executefile "c:\readXml.vbs"51Testing软件测试网p#r4R'e!e0w5T'C C
51Testing软件测试网 R|9][ x;M!g
点“Run”,就能看到这个效果了。51Testing软件测试网g8p&r4iMt
当然,如果你不用调用外部文件的方式,也可以,如下图。51Testing软件测试网 n,],H6iB5YMmL["c
51Testing软件测试网Pch|U'M4O2UoM8C
51Testing软件测试网(LcG%Te'|

TAG: QTP

stevenlee的个人空间 引用 删除 stevenlee   /   2011-10-25 16:12:46
好复杂啊,有点看不懂
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

我的栏目

日历

« 2020-09-17  
  12345
6789101112
13141516171819
20212223242526
27282930   

我的存档

数据统计

  • 访问量: 5479
  • 日志数: 16
  • 建立时间: 2007-06-12
  • 更新时间: 2007-06-21

RSS订阅

Open Toolbar