51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4125|回复: 16
打印 上一主题 下一主题

[原创] QTP 描述性编程 循环时遇到的问题

[复制链接]
  • TA的每日心情
    开心
    2017-3-3 10:21
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]测试排长

    跳转到指定楼层
    1#
    发表于 2010-12-22 09:13:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    一:在循环语句内实例化对象
    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属性值没有发生变化 都可以匹配到该对象的。
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    该用户从未签到

    2#
    发表于 2010-12-22 11:12:22 | 只看该作者
    [上海] 我公司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
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
    发表于 2010-12-22 12:08:52 | 只看该作者
    wait的时间太短了,下一个循环到来时,页面还在加载,button的对象还没有所有报错了。
    把wait的时间改长一点,如wait 5
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2010-12-22 13:00:52 | 只看该作者
    本帖最后由 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
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-3-3 10:21
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]测试排长

    5#
     楼主| 发表于 2010-12-23 10:11:58 | 只看该作者
    都有试过,
    不是等待时间的问题,再执行第二次循环的时候,对象是存在的,能够highlight到。就是不能执行click动作
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
    发表于 2010-12-23 13:11:13 | 只看该作者
    set objBrowser=browser("title:=百度一下,你就知道").page("title:=百度一下,你就知道")
    For i=1 To 4
    objBrowser.WebButton("name:=百度一下").Click
    wait 2
    Next
    这样就可以了哈~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-3-3 10:21
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]测试排长

    7#
     楼主| 发表于 2010-12-24 12:35:14 | 只看该作者
    嗯,我主要是想知道为什么用objbutton.click在第二次循环的时候对象能找到,但click不到,还报找不到对象的错误。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
    发表于 2010-12-24 15:29:09 | 只看该作者
    没有环境 要不就帮你看下 是挺有意思的~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
    发表于 2010-12-24 20:23:58 | 只看该作者
    比较 有意思的问题!
    比如
    外边 取个table对象, 多页
    然后for 循环点击下一页
    这样 点击后 table 不可用了,按说属性啥的肯定是没变的
    为什么呢?
    点击操作导致页面刷新了,但不清楚,描述没变,刷新后 就不能用了,
    也许 是qtp根据描述取到对象的时候,如果页面有刷新,那么 这个对象就被qtp释放掉了
    这样的话,就
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
    发表于 2010-12-24 23:15:05 | 只看该作者
    [上海] 我公司2010年6月份刚在纳斯达克上市,现在要找一名自动化测试组长,薪资福利良好

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



    月薪20K有不?有我就去
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2010-12-24 23:23:26 | 只看该作者
    面向对象基础理论告诉我们:对象使用前需要构造,使用完毕需要解构
    第一种方法就隐含重新构造的过程,而第二种完全是同一个对象去操作,事实上操作完毕之后对象就自动解构了,所以无法找到对象就是理所当然的咯
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
    发表于 2010-12-28 17:22:11 | 只看该作者
    本帖最后由 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那看到的
    此问题由同步导致
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    13#
    发表于 2010-12-28 19:48:30 | 只看该作者
    原来这样……
    那用RefreshObject应该也行的
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    14#
    发表于 2010-12-30 16:14:58 | 只看该作者
    MARK
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    15#
    发表于 2011-1-7 11:10:54 | 只看该作者
    mark
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-9-2 09:10
  • 签到天数: 14 天

    连续签到: 1 天

    [LV.3]测试连长

    16#
    发表于 2011-1-10 17:48:13 | 只看该作者
    mark
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    17#
    发表于 2011-1-10 18:12:23 | 只看该作者
    同意此方法,我之前也遇到过这个问题,页面刷新后必须要重新Set object,否则会找不到对象
    面向对象基础理论告诉我们:对象使用前需要构造,使用完毕需要解构
    第一种方法就隐含重新构造的过程,而第 ...
    lyscser 发表于 2010-12-24 23:23
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-21 00:21 , Processed in 0.083183 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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