Practice makes perfect! 目前,主要从事Web系统、B/S构架的测试。

QTP脚本的学习

上一篇 / 下一篇  2007-06-11 16:48:19 / 个人分类:QTP学习

空闲的时候就学习如何编写QTP脚本,今天学了一天,头都大了,有没有什么好的方法,有经验的朋友分享一下经验啊;我能看懂脚本但自己写下来就麻烦了.51Testing软件测试网 e [["}%R
51Testing软件测试网!y__J9?"{EG
QTP专家视图中使用的是VBscrīpt,大家可以查看一些关于VB的使用来帮助理解QTP专家视图中的脚本。
D%]Cx v~6k^!t ^0在此提供一些向导性说明和注意事项,希望队大家有帮助。
0A2F4l X'}HM dP9i01 VBscrīpt是不区分大小写的,比如,两行语句的作用是相同的。
,T;t@8A k$}x+i}0Browser("Browser").page("Page").webButton("Login").click
Y5|R/Y/\Oo0Browser("Browser").Page("Page").WebButton("Login").Click
zH0^gp*\w"o(E02 字符串常量一定要用双引号“”引起来,比如,51Testing软件测试网$qcNu1]k*B
Browser("Browser").Page("Housing Contract Def").WebEdit("txtCompoundName").Set"测试"51Testing软件测试网%x9Mc%f8l|E
其中“测试”,是字符串常量,如果用数字常量,则不需要引号;
MiI3|t0
3 使用变量,要先定义51Testing软件测试网D6MI GA/RY"o iH
普通类型的变量,使用Dim语句定义,格式Dim 变量名 (as 变量类型),比如51Testing软件测试网'R$n#MiQ-]o6L@
Dim num as int51Testing软件测试网p)DI9~"FvrE/VJ
num=Browser("Browser").Page("HousingContractDef").WebList("lstCity").GetROProperty(Property)51Testing软件测试网"a]-S*pb0p:|O
如果要指定一个用于存储对象的变量,则使用Set语句,比如,51Testing软件测试网7a3@*w,K.YaT
Set UserEditBox=51Testing软件测试网;c6`JD1T"JC
Browser("Browser").Page("HousingContractDef").WebEdit("txtCompoundName")
51Testing软件测试网vq7\#F@hG
UserEditBox.set "特色体能"51Testing软件测试网S^ u'Y@-~^|t
4 使用括号的规则,一般如下:
W XiBKE;I0如果想调用一个方法的返回值,那么这个方法的参数必须用括号括起来。比如,51Testing软件测试网0}w R Dfov
(1)Set WebEditObj = Browser("Mercury Tours").Page("Method of Payment").WebTable(FirstName).ChildItem(9,3,"WebEdit",0)51Testing软件测试网q)Y,sHl ho`
WebEditObj.Set "Example"
#wya lI7r ^9k/E*B051Testing软件测试网7j"nJ!~f
(2)call 语句中,Action的参数列表需要用括号括起来,
:Wi TV;eL7ha[,a6y8S;l0CallRunAction("BookFlight",oneIteration)51Testing软件测试网&KH6j3Ta
51Testing软件测试网TE]7Zo2m#t+L
(3)Check 方法的返回值,所以check方法的参数CheckPoint("MyProperty")必须要用括号括起来。
W c5^r%x(ES$W9@0a = Browser("MyBrowser").Page("MyPage").Check(CheckPoint(MyProperty))
c"bG_ v7dR0
t:ps0Ow0(4)Click方法不用括号,因为不需要返回值;
!N\UX'|K0Browser("Browser").Page("Page").WebButton("Login").Click
MO ~!Q.HkFO05 控制语句的使用51Testing软件测试网/soi'zL
If ...Then...Else, For...Next,Do...Loop51Testing软件测试网T6_^"V c*h h
51Testing软件测试网U z7^K3It+T
6 实例解析
Y2q;I(hWy0(1)Browser("Browser").Page("Housing Contract Def").WebEdit("txtCompoundName").Set"testing"
8v}b1b(dY6E:r0
Browser("Browser")表明这个浏览器测试对象的名字为Browser;51Testing软件测试网 |c+pOQ&l1w8^ f\L
Page("Housing Contract Def")表明当前页的名称是Housing Contract Def;
f-~ ^m f&E6e0WebEdit("txtCompoundName")表明当前被操作的对象是一个WebEdit类型的对象,51Testing软件测试网$IE({+IX
它的名称txtCompoundName;51Testing软件测试网;MZ l2Tm
Set"testing"表明要将txtCompundName这个WebEdit对象设置的值设置为“testing”;51Testing软件测试网B!p9^| qc*p#s

} a5|ZxX[s0(2)在写脚本的时候,键入了一个对象的类型Browser(,系统就会自动列出对象仓库中所有Browser类型对象供用户选择;如果此时对象仓库中只有一个对象,就会直接输入该对象;
1g7LoU(W})c j}\]0(3)在一个对象后面,输入一个表示层次关系的点号(.),系统就会自动列出该对象的所有属性和方法信息;
z5\+mn |%VBq }0{+B}0(4)如果键入的方法包含参数,那么在输入完这个方法的名称后,QTP会以tip的形式给出方法后面的参数列表。比如,select方法,当键入Browser("Browser").Page("Housing Contract Def").WebList("lstSex").Select后,系统会自动显示select(items)信息。51Testing软件测试网AR+jR}!P

d5r)Z$x"NI7F#_%B D0(5)Data Table 参数化语法:51Testing软件测试网P$R VRe1Z/Y9F2f?U
Object_Hierarchy.Method DataTable(ColumnName,SheetID)51Testing软件测试网L{!h/e,HNv
Object_Hierarchy指对测试对象的层次定义,层次对象之间用.号分隔;
k[]\`?$k0
Method 指对被操作对象使用的方法,比如,select;51Testing软件测试网0p/k(SU/F(T*K(~
DataTable指的是要从DataTable 中获得数据;51Testing软件测试网l%sUAu4F
ColumnName,指的是DataaTable中提供数据的列的名称;51Testing软件测试网9}t*e w&i
SheetID:指数据所属的sheet,如果使用一个全局参数,则sheetID为dtGlobalSheet.
cyNx-W/_*C&~Yh0Su0
Data Table的应用说明:比如,在Mercury Tours系统中,航班的选择时,有出发地——目的地,录制一次只能选择一个出发地和一个目的地;如果想测试起始和目的地为其它城市时,系统是否能正常运行,无需在进行录制,只需对出发地(fromPort)和目的地(ToPart)进行参数化即可。51Testing软件测试网` B"|1sW#Z5@
以ToPart为例说明————参数化前的语句:
:ml?)A OT$I0Browser("Welcome:Mercury Tours").Page("Find a Flight:Mercury").Weblist("ToPart").select"London"51Testing软件测试网UZ9fI^!v+_2jV
参数后的语句:51Testing软件测试网7bN MI+I3Q4[
Browser("Welcome:Mercury Tours").Page("Find a Flight:Mercury").Weblist("ToPart").select DataTable("ToPart",dtGlobalSheet)51Testing软件测试网1w9q$_!}$| x
51Testing软件测试网&q3Eu W'b@

jM.}3t9^ Rl051Testing软件测试网K;Hz|6I3fN

!Zw:k ~;]d(L+k0
2Z-r1ov BFR+F4\"I0
;ae)Gk7s0
6J:L2b'pm%}0
D0JK,w/K%XVB051Testing软件测试网N'KG$b*a@,i

$c@!x(~v~0

TAG: QTP学习

引用 删除 ACE2003   /   2009-03-27 01:12:22
LZ加我MSN 交流:kevinpzeng@hotmail.com
Freedom Group 引用 删除 Lola1123   /   2007-07-16 15:22:47
To 碎片:哦,我一般的习惯是先定义变量后使用,这样自己心里有个底。 发现问题——解决问题 是个提升的过程,有好处。
碎片的个人空间 引用 删除 碎片   /   2007-07-13 21:24:22
想说的是
在QTP中,使用变量之前不定义也是可以用的.这点很不方便,在出现错误时比较难定位.一次我写程序,运行时出错,调试了半天,发现逻辑上一点错都没有,最后发现是一个变量名写错了.郁闷了好久.
 

评分:0

我来说两句

Open Toolbar