Qtp循环后,找不到对象的问题~求解决一下
各位老大,谁帮我解决一下这个问题啊。这个问题都困惹我好久了,百度也就一个Init来解决,但是在我这里还是不行。
我总觉得,在循环体内,进行对象定义感觉怪怪的。。。。
虽然这个问题可以通过其它方法解决,但是问题仍然存在,让我耿耿于怀啊
'循环外定义对象,在I=1的之候,提示找不到对象
set a=Browser("**").Page("**").WebElement("class:=category_list category_list_r").ChildObjects(Link)
For i=0 toa.count
a(i).click
Browser("**").Page("**").Link("html tag:=a","innertext:=返回","class:=c7").Click
wait 2
Next
'在循环内定义对象,能正常通过
For i=0 to 7
set a=Browser("**").Page("**").WebElement("class:=category_list category_list_r").ChildObjects(Link)
a(i).click
Browser("**").Page("**").Link("html tag:=a","innertext:=返回","class:=c7").Click
wait 2
Next
set a=Browser("**").Page("**").WebElement("class:=category_list category_list_r").ChildObjects(Link)
For i=0 toa.count
'a(i).init 加入这一句以后,则下句通过不了提示:找不到a(i)对象
a(i).click
Browser("**").Page("**").Link("html tag:=a","innertext:=返回","class:=c7").Click
wait 2
Next 看看a.count返回的值是多少 你的脚本是循环完毕之后才能跳出,你中间
Browser("**").Page("**").Link("html tag:=a","innertext:=返回","class:=c7").Click
这句话执行之后就把前面的控件挡住了。所以才会出现a(i)这个对象找不到。 对象集合若定义在循环外,那么在循环内点击link跳转页面后,对象失效,所以会提示缺少对象
定义在循环内就是每次都会重新取集合,则不会出现失效的问题了 bty,a.count应该改为a.count-1 楼主,有结果了吗,结果是什么呢?
麻烦楼主给个完美的结局! http://bbs.51testing.com/viewthread.php?tid=455400&rpid=2097758&ordertype=0&page=1#pid2097758
http://bbs.51testing.com/viewthread.php?tid=361912&rpid=1867479&ordertype=0&page=1#pid1867479 回复 2# 026300
返回值是正常的,这个确认没有错,主要是click之后,会进入到iframe中,再返回时,就找不到对象了 回复 3# xiaoxiaogt
对,确实是这样。但是我现在想要QTP再次正确识别到刚才的控件~ 回复 5# hsjzfling
这个是我忽略了。不过在溢出之前,就已经找不到对象了 回复 6# lvtianhai
看来给不了结果了。。。。 回复 7# lyscser
呵呵,以后会多搜搜贴子,谢谢了 这两天忙死,现在还在加班,抽空来补充一下吧。
我看了两个帖子:
目前的两种说法是:
1.在循环体内set,重新构造对象.
这种方法把和把对象直接放到循环体内无区别。所以就不讨论。
2.使用init。此方法我确实没有通过。我看了一些例子。一般的都是举百度或Google的例子
try
set objbutton=browser("title:=百度一下,你就知道").page("title:=百度一下,你就知道").webbutton("name:=百度一下")
For i=1 To 4
if i>1 then
objbutton.init
msgbox i
end if
objbutton.click '''''
next
我测试了段脚本也未能正常通过...
所以我现在只能说,这个暂时没有完整的答案,先把对象放到循环体内吧。
我会持继跟踪这个问题,哪天解决了的话,我来挖坟~~!! 说一下:
第一、对象标号只能到count - 1set a=Browser("**").Page("**").WebElement("class:=category_list category_list_r").ChildObjects(Link)
For i=0 toa.count - 1
a(i).click
Browser("**").Page("**").Link("html tag:=a","innertext:=返回","class:=c7").Click
wait 2
Next第二、描述性语言创建的对象必须保持不变才能继续下面的操作,中途其他的Click或者refresh都可能造成不识别,除非重新创建
第三、由上一点可知,如果能养成Set A = ……,用完之后Set A = Nothing的习惯,一切都不成问题了
页:
[1]