自动化测试专家,专注于自动化测试领域的框架开发及国外最新自动化技术,担任过银行、电子商务等项目的自动化测试工作,精通自动化测试工具QTP、Watir等.并对QTP有过深入的研究,有过企业内训和工具培训经验,希望能与各位同行一起沟通,交流,探讨。 zzxxbb112@hotmail.com

【QTP系列讲座 22】 == 描述性编程 ==

上一篇 / 下一篇  2011-10-31 16:53:46 / 个人分类:QTP系列讲座

 Rss订阅IQuickTest关于如何订阅?51Testing软件测试网 vZ,Q+Zc EC

GoogleReader订阅地址: http://feeds.feedburner.com/iquicktest

!S$Z w-CX Y0

作者:zzxxbb112
时间:2009/12/09 版权所有,侵权必究。51Testing软件测试网ui0C)x h/V}

出处:http://blog.csdn.net/zzxxbb11251Testing软件测试网u!IZcQ%NW5s


        这一章的内容较为简单,对描述性编程熟悉的朋友可以直接略过,为了教程的完整性还是把这章的内容补上去,在学习本章之前,请先务必完成以下讲座的学习:51Testing软件测试网p3du;`5lz X

软件测试自动化-QTP系列讲座 2】 == 对象库及原理透析 ==

3{ XcP | Ho*T0

http://blog.csdn.net/zzxxbb112/archive/2009/08/27/4489342.aspx51Testing软件测试网_0wW?jVPN

 51Testing软件测试网2F"E+bAc

  • 描述性编程:我们都知道QTP对象的鉴别原理,在QTP回放时,通过脚本中对应对象库中的对象的属性与真实测试对象的属性进行对比并且能够唯一匹配之后才能够对对象进行操作。而描述性编程其实就是通过把对象库中的对象属性的描述全部通过脚本体现出来,并且可以脱离对象库进行运行脚本。

 

L^:At3m6N0
  • 描述性编程语法

systemutil.Run "C:/Program Files/Internet Explorer/IEXPLORE.EXE","http://www.baidu.com"51Testing软件测试网?:Y{"Z(q,g3F&k&[;g

set oBrowser=Description.Create 
Set oPage=Description.Create 
Set oEdit=Description.Create51Testing软件测试网Z!V%r2? N

oBrowser("micClass").value = "Browser" 
oPage("micClass").value="Page" 
oEdit("name").value="wd"51Testing软件测试网:Mf!@J]}:TGr0n,~'T S

Browser(oBrowser).Page(oPage).WebEdit(oEdit).Set "zzxxbb112"

^/~v@:`p#[B0J0

开启一个百度浏览器后,不需要对象库,直接运行以上脚本,通过以上的例子我们可以看到通过把对象的属性都描述下来,运行以上脚本并可直接在搜索框进行输入,运行的原理是一样的,只不过一个是QTP帮我们封装好了的对象库,而现在是我们通过把对象的属性都描述下来从而定位对象。

'F2h|$S9YG0

 51Testing软件测试网Di,V*_H:C

  • 字符串描述

systemutil.Run "C:/Program Files/Internet Explorer/IEXPLORE.EXE","http://www.baidu.com/"

i)YR:o3HN0

Browser("micClass:=Browser").Page("micClass:=Page").WebEdit("name:=wd").Set "zzxxbb112"51Testing软件测试网 m{0v^ ~I9|7wQm#^

执行完后我们可以看到字符串描述和上面的普通方法效果是一样的。51Testing软件测试网&c:Dy.B'seF6w6Z

 51Testing软件测试网k v1MTG$^AFP

  • 遍历对象

systemutil.Run "C:/Program Files/Internet Explorer/IEXPLORE.EXE","http://www.baidu.com/gaoji/advanced.html"51Testing软件测试网%Jl.c0A)Dq2~4O

Set all_oEdit = Description.Create 
all_oEdit("micClass").value="WebEdit"51Testing软件测试网|4Q-x9?-]`7Q

Set all_oEdits = Browser("micClass:=Browser").Page("micClass:=Page").ChildObjects(all_oEdit) 
For i = 0 to all_oEdits.count - 1 
    Set oEdit = all_oEdits.item(i) 
    oEdit.set "zzxxbb112" 
Next

*vz Y {ZJ^9E0

使用此方法我们就可以通过遍历页面上所有同类型的对象并对其进行操作。51Testing软件测试网` k/RX? L+T

 

'jep%E1T-Nfi0
  • 多窗口控制

以上3钟情况的脚本都是只能在打开一个浏览器的情况下才能正常执行,否则就会报对象超过一个的错误,不能识别,因此当出现多窗口的情况我们可以使用CREATIONTIME这个属性来做顺序的控制。

o%O.i.N'^(Gi t]0

systemutil.Run "C:/Program Files/Internet Explorer/IEXPLORE.EXE"51Testing软件测试网HG z)^V8_

systemutil.Run "C:/Program Files/Internet Explorer/IEXPLORE.EXE"51Testing软件测试网I8HSA[ g$L m

Browser("CreationTime:=0").Navigate "http://blog.csdn.net/zzxxbb112"

m:Ngn6s,Kv`0

Browser("CreationTime:=1").Navigate "http://www.baidu.com"

$Y%Y#a3ex?(}#q0

使用以上代码QTP就能够分辨出多个浏览器的情况了,当然我也可以使用INDEX属性,大家可以试试。51Testing软件测试网#PA;gs-e,bg8U6c

注意:当我们使用Browser("CreationTime:=-1")时表明当前有且仅有一个浏览器窗口,当我们只需要一个浏览器的时候可以使用这个来作为判断依据。51Testing软件测试网 G%m p ~[2s*x A

buBrowser=Browser("CreationTime:=-1").Exist(0)51Testing软件测试网kpSJnW%f

If buBrowser Then51Testing软件测试网? Fn!j eYGN$]

    msgbox "存在一个浏览器窗口"51Testing软件测试网%O"Gc x2`hY h

else51Testing软件测试网`f%^'gR

    msgbox "存在0个或者多个浏览器窗口"51Testing软件测试网,{t3Ih5u;~ B

End If51Testing软件测试网$}'V/V&m!Y)i


TAG: iquicktest QTP qtp

 

评分:0

我来说两句

我的栏目

日历

« 2024-04-12  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 32216
  • 日志数: 49
  • 建立时间: 2009-10-17
  • 更新时间: 2011-10-31

RSS订阅

Open Toolbar