51Testing软件测试论坛

标题: QTP 描述性编程 循环时遇到的问题 [打印本页]

作者: june.diny    时间: 2010-12-22 09:13
标题: QTP 描述性编程 循环时遇到的问题
一:在循环语句内实例化对象
For i=1 To 4
set objbutton=browser("title:=百度一下,你就知道").page("title:=百度一下,你就知道").webbutton("name:=百度一下")
objbutton.click
wait 2
Next

'二:在循环体外实例化对象
set objbutton=browser("title:=百度一下,你就知道").page("title:=百度一下,你就知道").webbutton("name:=百度一下")
For i=1 To 4
objbutton.click
wait 2
Next

好了说明下问题(版本9.2):  
运行:打开百度首页--run test  
结果:第一种方法pass
          第二种方法在运行二次循环的时候报错 没有找到对象(Cannot identify the object "[ WebButton ]" (of class WebButton). Verify that this object's properties match an object currently displayed in your application.)

请问这是什么原因 ?问题补充:
有人解释为 在第一次点击button之后 该对象的某些属性值发生变化 所以二次循环时就没有识别到button对象
这点我不是很赞同 因为我描述中的属性(name)是没有变化的 而QTP在识别对象的时候是根据用户所描述出的属性去匹配对象;所以只要name属性值没有发生变化 都可以匹配到该对象的。
作者: sophiashan07    时间: 2010-12-22 11:12
[上海] 我公司2010年6月份刚在纳斯达克上市,现在要找一名自动化测试组长,薪资福利良好

我们项目组需要招聘自动化测试组组长,职位信息如下:
1.计算机相关专业本科以上学历,熟悉软件工程师学原理;
2.软件测试相关经验3年以上,其中至少包括2年功能自动化测试经验;
3.熟悉QTP工具的使用,了解QTP原理和对象识别机制;
4.熟悉VBScript脚本语言,能进行相关自动化脚本函数的编写;
5.较强的语言表达和文档编写能力及良好的沟通技巧;
6.有金融银行基础业务知识经验、有网银业务经验为佳;
7.有自动化框架编写、设计经验和软件开发经验有团队管理经验为佳;
8.熟悉Java、J2EE 、WebSphere 、Application Serve、DB2、Oracle等为佳
9.有Unix平台的使用经验(AIX/Solaris/HPUX/Linux)为佳;
欢迎回复,谢谢:
shanjing1983@163.com
sophiashan07@hotmail.com
作者: my_way    时间: 2010-12-22 12:08
wait的时间太短了,下一个循环到来时,页面还在加载,button的对象还没有所有报错了。
把wait的时间改长一点,如wait 5
作者: xhhuang1618    时间: 2010-12-22 13:00
本帖最后由 xhhuang1618 于 2010-12-22 13:02 编辑

set objbutton=browser("title:=百度一下,你就知道").page("title:=百度一下,你就知道").webbutton("name:=百度一下")
For i=1 To 4
  while not objbutton.exit
      if j<10 then
          wait 2
          j = j+1
         blTemp = false
      elseif objbutton.exit
         blTemp = true
      end if
  Wend
  if blTemp then
     objbutton.click
  end if
Next
作者: june.diny    时间: 2010-12-23 10:11
都有试过,
不是等待时间的问题,再执行第二次循环的时候,对象是存在的,能够highlight到。就是不能执行click动作
作者: zone_xf    时间: 2010-12-23 13:11
set objBrowser=browser("title:=百度一下,你就知道").page("title:=百度一下,你就知道")
For i=1 To 4
objBrowser.WebButton("name:=百度一下").Click
wait 2
Next
这样就可以了哈~
作者: june.diny    时间: 2010-12-24 12:35
嗯,我主要是想知道为什么用objbutton.click在第二次循环的时候对象能找到,但click不到,还报找不到对象的错误。
作者: lantianwei    时间: 2010-12-24 15:29
没有环境 要不就帮你看下 是挺有意思的~
作者: sunnyswu    时间: 2010-12-24 20:23
比较 有意思的问题!
比如
外边 取个table对象, 多页
然后for 循环点击下一页
这样 点击后 table 不可用了,按说属性啥的肯定是没变的
为什么呢?
点击操作导致页面刷新了,但不清楚,描述没变,刷新后 就不能用了,
也许 是qtp根据描述取到对象的时候,如果页面有刷新,那么 这个对象就被qtp释放掉了
这样的话,就
作者: lyscser    时间: 2010-12-24 23:15
[上海] 我公司2010年6月份刚在纳斯达克上市,现在要找一名自动化测试组长,薪资福利良好

我们项目组需要招 ...
sophiashan07 发表于 2010-12-22 11:12



月薪20K有不?有我就去
作者: lyscser    时间: 2010-12-24 23:23
面向对象基础理论告诉我们:对象使用前需要构造,使用完毕需要解构
第一种方法就隐含重新构造的过程,而第二种完全是同一个对象去操作,事实上操作完毕之后对象就自动解构了,所以无法找到对象就是理所当然的咯
作者: lantianwei    时间: 2010-12-28 17:22
本帖最后由 lantianwei 于 2010-12-28 17:44 编辑

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
wait 2
Next
刚从zzxx112那看到的
此问题由同步导致
作者: lyscser    时间: 2010-12-28 19:48
原来这样……
那用RefreshObject应该也行的
作者: xieyang702    时间: 2010-12-30 16:14
MARK
作者: 上帝注定    时间: 2011-1-7 11:10
mark
作者: runnerhuang    时间: 2011-1-10 17:48
mark
作者: nimcok    时间: 2011-1-10 18:12
同意此方法,我之前也遇到过这个问题,页面刷新后必须要重新Set object,否则会找不到对象
面向对象基础理论告诉我们:对象使用前需要构造,使用完毕需要解构
第一种方法就隐含重新构造的过程,而第 ...
lyscser 发表于 2010-12-24 23:23





欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2