51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2065|回复: 1
打印 上一主题 下一主题

[原创] QTP中Description对象使用的一点经验

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-10-27 14:48:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
转载请保留:本文出自Robel.Yi的51Testing软件测试博客:http://www.51testing.com/?222680
    我们在用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
Next
转载请保留:本文出自Robel.Yi的51Testing软件测试博客:http://www.51testing.com/?222680
    这个循环在运行几次后就会报错,我们只要在for循环下面加上一句:
Set Lists=Browser("Yahoo!奇摩").Page("Yahoo!奇摩").ChildObjects(oDesc)
这样就不会报错了,原因是因为Lists是一个数组,在第一次赋给页面子对象以后,运行几次就会丢失对象,这样在再继续循环就会报错,这也可以算是QTP本身的一个BUG,所以各位朋友在以后用这个对象时要注意这个地方,谢谢啦!
   如果还有不明白的可以加我  
   MSN:yidecai  
   or QQ:258020380
   我会第一时间回复的,谢谢大家的支持。
转载请保留:本文出自Robel.Yi的51Testing软件测试博客:http://www.51testing.com/?222680
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2008-11-27 13:59:26 | 只看该作者
呵呵,我在使用的时候还没有遇见过对象会丢失的问题。

不过我没看明白楼主上面的
no = Lists.count - 1
For i = 0 To no
no = Lists.count - 1

如果在运行期间,对象没有变化的话,为什么不直接把上面的三个语句写成
For i = 0 To Lists.count - 1呢?

如果对象本身就变化的,在加上楼主说的动态重新获取新的对话到是必须的
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-12 08:42 , Processed in 0.070959 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表