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

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

目前,企业中对XML的应用越来越广泛,作为自动化测试的测试工程师,也应该掌握XML的读写操作。51Testing软件测试网2H.c)T#m5Kn
以下我使用XML DOM技术演示一个例子,用以读取XML指定节点的节点内容值。
LD"N*eM0读取函数原型 GetXml strXmlPath,nodeName51Testing软件测试网c5TLS7S ];Nndc7k
这个函数的第一个参数表示xml文件所在路径,第二个参数表示希望获取到的xml节点名,请结合下列例子看
7DV1i Z2CY2A0首先,新建一个vbs文件(取个名字叫readXml.vbs),输入代码:

CODE:51Testing软件测试网6K }j6hKGf9w+Wi

'==================================================================51Testing软件测试网$fH5^b1d#^ Tw
' Author : songfun
!fM2oaU{a0'
Xf_:d G*i W$Kes0' Descrīption : Read XML
3yK2jcfX:sC0'==================================================================51Testing软件测试网-uz!}#U5i'z)f
Dim strXML51Testing软件测试网G.s)vE$J9K2s2K

;`KC4N?0GetXml "c:\search.xml","TestResult" '这个函数的第一个参数表示xml文件所在路径,第二个参数表示希望获取到的xml节点名,请结合下列例子看51Testing软件测试网$bjLTOB
MsgBox strXML51Testing软件测试网-WN{R_%H I
51Testing软件测试网J?X3Bv'Ed-az

3^ vBrS0Function GetXml (ByVal strXmlFilePath,ByVal xmlNodeName)
SW8L_@MhG0Dim xmlDoc,xmlRoot51Testing软件测试网&C3rL'p L\!w?X5j
51Testing软件测试网JUZ gpkC
Set xmlDoc = CreateObject("Microsoft.XMLDOM") '创建XML DOM对象
1@B bY [?[U0xmlDoc.async = False '控制加载模式为同步模式(xml树加载完毕后再执行后续代码)51Testing软件测试网PCQ`[G&FS vgN
xmlDoc.load strXmlFilePath '载入xml文件51Testing软件测试网M|] PR'C&s R2r
If xmlDoc.parseError.errorCode <> 0 Then51Testing软件测试网,Wu p,~x M'jZ+N
MsgBox "XML文件格式不对,原因是:" & Chr(13) & xmlDoc.parseError.reason51Testing软件测试网j l5J*\;F+d
Exit Function51Testing软件测试网_5eOB r;B%R
End If51Testing软件测试网*z3OJtQy-~
Set xmlRoot = xmlDoc.documentElement51Testing软件测试网3g$iZx!j/H
xmlRecursion xmlRoot,xmlNodeName '调用xml递归函数传入指定的根和节点名
s'pZ J S-][0GetXml = True 'xmlRecursion (xmlRoot)51Testing软件测试网"\_eI Lq3i

+\dm9sL OE0End Function
%K!N:b a%MK&|8_K051Testing软件测试网c1yej?$]1Veo
Function xmlRecursion(byval xmlNode,byval strNodeName)51Testing软件测试网.s7m~(^}T$u/^v
If xmlNode.nodeName = strNodeName And xmlNode.hasChildNodes Then51Testing软件测试网#b'wQWs/OfNy
If xmlNode.childNodes.item(0).nodeName = "#text" Then51Testing软件测试网4D#h(U%g%j2r
strXML = strXML & xmlNode.nodeName & ":" & xmlNode.childNodes.item(0).nodeValue & Chr(13)51Testing软件测试网|\"nk9Yi0x
End If51Testing软件测试网$R]PtP'[.^E#X
End If51Testing软件测试网I F[W$I:UnS} MF
If xmlNode.hasChildNodes Then51Testing软件测试网W q*A)?-d!Q/n_)W
For Each childNodeItem In xmlNode.ChildNodes51Testing软件测试网&\7N'[&M~6i cTM!U
If childNodeItem.hasChildNodes Then
2SOj a a;LRy6}0xmlRecursion childNodeItem,strNodeName
J,gGr'P^hm8F0End If51Testing软件测试网B @\\_ vOg8\
Next
8m5k \4fFgf0End If51Testing软件测试网U.X-KSNh*BB
End Function
接着,自己构造一个xml文件(取个名字叫search.xml),如:

CODE:51Testing软件测试网.zU8td-s2k o r

<?xml version="1.0" encoding="GB2312"?>
;s*ym,om ^ ]Y051Testing软件测试网GAK5U"l2MBfaN
<ROOT>51Testing软件测试网 R)a3A/JaQst!OYl
<TestCase>51Testing软件测试网[(N2\5K_
<TestNumberOne>1</TestNumberOne>51Testing软件测试网tNW$[K2N7N.@*|.K
<TestNumberTwo>2</TestNumberTwo>51Testing软件测试网w wY+j`4Y @#Ac~
<TestNumberThree>+</TestNumberThree>
)O%m-W(H*I5xCmT0<TestResult>3</TestResult>51Testing软件测试网'wE u9ii
</TestCase>
&q/K4pC M:@q2`{!D0<TestCase>
M9Sd3\+YO0<TestNumberOne>3</TestNumberOne>
t'feLC)Y ?6v0<TestNumberTwo>2</TestNumberTwo>
Z%~ l/n;W`0<TestNumberThree>-</TestNumberThree>51Testing软件测试网t3puwMH8a5r%y5n#j
<TestResult>1</TestResult>51Testing软件测试网2Nk%|r&YP
</TestCase>
O Q9rq P$U0<TestCase>51Testing软件测试网h/E,a@"ifx/}
<TestNumberOne>3</TestNumberOne>
2sw6N5Pw p.h-~V1mO0<TestNumberTwo>7</TestNumberTwo>51Testing软件测试网 I@_ \p^ C f} mk
<TestNumberThree>*</TestNumberThree>51Testing软件测试网*LCI.w ?&D o
<TestResult>21</TestResult>
J:^'w5q2T Y,r0</TestCase>
4Hkg`~ YC m0<TestCase>
0g*w6t_ |5BL``0<TestNumberOne>2</TestNumberOne>
)H]Jw K!vy'o2G0<TestNumberTwo>5</TestNumberTwo>51Testing软件测试网Z a,ogS6[ X/L2K dv
<TestNumberThree>/</TestNumberThree>
,S-|s2_&p3f-_.y^r0<TestResult>0.4</TestResult>
i @gx2wR G0</TestCase>
q xOI:r ~0</ROOT>
然后,在QTP的expert view中调用刚才写的vbs文件:51Testing软件测试网 ljA&Le{
executefile "c:\readXml.vbs"51Testing软件测试网h pQv5W `
51Testing软件测试网tH#h:mG7f!|,eP&D
点“Run”,就能看到这个效果了。
}.z[gn1lC0当然,如果你不用调用外部文件的方式,也可以,如下图。51Testing软件测试网uQz&P#G:MNp/BW pYI

P{E8E Z?(LZ`Uk0
(xrSm:xKrW0

TAG: QTP

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

评分:0

我来说两句

我的栏目

日历

« 2023-04-16  
      1
2345678
9101112131415
16171819202122
23242526272829
30      

我的存档

数据统计

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

RSS订阅

Open Toolbar