QTP中Description对象使用的一点经验
2009-01-14 09:00
267 查看
QTP中Description对象使用的一点经验 欢迎进入软件测试社区论坛,与200万技术人员互动交流 >>进入
我们在用QTP进行自动化脚本开发的时候,经常会要使用到Descrīption对象,但是在使用Descrīption时,却有一个问题,那就是在得到
了所有子对象后,进行循环点击时,经常会循环几次后,就报generic
error而使脚本不能再往下执行,开始的时候很不明白,为什么会出现这种情况,后来经过找资料和自己实践,终于搞清楚了原因,先看代码:Set ōDesc=Descrīption.Create()
oDesc("micclass").Value ="Link"
Set Lists=Browser("Yahoo!奇摩").Page("Yahoo!奇摩").ChildObjects(oDesc)
no = Lists.count - 1
For i = 0 To no
no = Lists.count - 1
Print i & Lists(i).GetRoProperty("innertext") & ":" & Lists(i).GetROProperty("url")
If instr(1,Lists(i).GetROProperty("url"),"http") = 1 Then
Lists(i).Click
Dialog("Connect to tw.yahoo.com").WinButton("Cancel").Click @@ hightlight id_;_395324_;_scrīpt infofile_;_ZIP::ssf21.xml_;_
Browser("Yahoo!
奇摩").Page("Yahoo!奇摩").Sync @@ hightlight
id_;_Browser("Yahoo!奇摩").Page("Yahoo!奇摩")_;_scrīpt
infofile_;_ZIP::ssf22.xml_;_
Browser("Yahoo!奇摩").Close
If Lists(i).GetRoProperty("innertext") = "寬窄頁面切換" Then
i = i -1
End If
else
Services.LogMessage Lists(i).GetRoProperty("innertext") & "没有URL" , ErrorMsg
End If
Browser("Yahoo!奇摩").Sync
if Browser("Yahoo!奇摩").Page("Yahoo!奇摩").WebElement("notopenthelink").Exist(3) Then
Services.LogMessage i & Lists(i).GetRoProperty("innertext") & "連結錯誤" , ErrorMsg
'sheetNew.cells(j+1,1).value = Lists(i).GetROProperty(text)
'sheetNew.cells(j+1,2).value = Lists(i).GetROProperty(url)
End If
Browser("Yahoo!奇摩").Navigate("http://tw.yahoo.com/index.html")
Browser("Yahoo!奇摩").Sync
这个循环在运行几次后就会报错,我们只要在for循环下面加上一句:
Set Lists=Browser("Yahoo!奇摩").Page("Yahoo!奇摩").ChildObjects(oDesc)
这样就不会报错了,原因是因为Lists是一个数组,在第一次赋给页面子对象以后,运行几次就会丢失对象,这样在再继续循环就会报错,这也可以算是QTP本身的一个BUG,所以各位朋友在以后用这个对象时要注意这个地方,谢谢啦!
我们在用QTP进行自动化脚本开发的时候,经常会要使用到Descrīption对象,但是在使用Descrīption时,却有一个问题,那就是在得到
了所有子对象后,进行循环点击时,经常会循环几次后,就报generic
error而使脚本不能再往下执行,开始的时候很不明白,为什么会出现这种情况,后来经过找资料和自己实践,终于搞清楚了原因,先看代码:Set ōDesc=Descrīption.Create()
oDesc("micclass").Value ="Link"
Set Lists=Browser("Yahoo!奇摩").Page("Yahoo!奇摩").ChildObjects(oDesc)
no = Lists.count - 1
For i = 0 To no
no = Lists.count - 1
Print i & Lists(i).GetRoProperty("innertext") & ":" & Lists(i).GetROProperty("url")
If instr(1,Lists(i).GetROProperty("url"),"http") = 1 Then
Lists(i).Click
Dialog("Connect to tw.yahoo.com").WinButton("Cancel").Click @@ hightlight id_;_395324_;_scrīpt infofile_;_ZIP::ssf21.xml_;_
Browser("Yahoo!
奇摩").Page("Yahoo!奇摩").Sync @@ hightlight
id_;_Browser("Yahoo!奇摩").Page("Yahoo!奇摩")_;_scrīpt
infofile_;_ZIP::ssf22.xml_;_
Browser("Yahoo!奇摩").Close
If Lists(i).GetRoProperty("innertext") = "寬窄頁面切換" Then
i = i -1
End If
else
Services.LogMessage Lists(i).GetRoProperty("innertext") & "没有URL" , ErrorMsg
End If
Browser("Yahoo!奇摩").Sync
if Browser("Yahoo!奇摩").Page("Yahoo!奇摩").WebElement("notopenthelink").Exist(3) Then
Services.LogMessage i & Lists(i).GetRoProperty("innertext") & "連結錯誤" , ErrorMsg
'sheetNew.cells(j+1,1).value = Lists(i).GetROProperty(text)
'sheetNew.cells(j+1,2).value = Lists(i).GetROProperty(url)
End If
Browser("Yahoo!奇摩").Navigate("http://tw.yahoo.com/index.html")
Browser("Yahoo!奇摩").Sync
这个循环在运行几次后就会报错,我们只要在for循环下面加上一句:
Set Lists=Browser("Yahoo!奇摩").Page("Yahoo!奇摩").ChildObjects(oDesc)
这样就不会报错了,原因是因为Lists是一个数组,在第一次赋给页面子对象以后,运行几次就会丢失对象,这样在再继续循环就会报错,这也可以算是QTP本身的一个BUG,所以各位朋友在以后用这个对象时要注意这个地方,谢谢啦!
相关文章推荐
- 使用一些需要共享对象的一点小经验
- 使用QTP9.0的一点心得——对象仓库
- openMP的一点使用经验
- 使用泛型类生成对象时的一点注意
- 使用hibernate的Cascade的一点经验
- Delphi使用server组件控制excel的一点经验
- WordPress使用经验(一)独立的Description 和 Keywords
- openMP的一点使用经验
- 使用QTP管理wap页面对象心得小结 [ 光影人像 东海陈光剑 的博客 ]
- 一点关于MySQL参数delay_key_write、myisam_recover_options的使用经验
- openMP的一点使用经验
- 记录一点AndroidStudio使用SVN的经验
- Python面向对象操作使用方法,10年经验教你!
- asterisknow 安装使用的一点经验!
- 【转载】使用Unity开发项目的一点经验
- 关于 WinScp 的一点使用经验
- openMP的一点使用经验
- 关于继电器使用的一点经验教训!
- 一点Socket的使用经验
- .net对象模式下(Push模式),水晶报表使用的一些经验