51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2628|回复: 7
打印 上一主题 下一主题

[原创] 同一操作用对象库和描述性编程,回放结果不一样

[复制链接]
  • TA的每日心情
    开心
    2016-4-2 12:39
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2008-12-8 23:57:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    最近在写一些简单的QTP脚本,发现一个奇怪的现象(如题),不知道为什么,希望明白人给我解释一下。详细情况如下

    SwfWindow("abc").SwfTable("def").SelectCell 0, "Title"

    SwfWindow("abc").SwfTable("swfname:=xxx").SelectCell 0, "Title"
    在我的测试环境里,上面这两种操作方式,只有当采用第一种时QTP才能回放成功。如果QTP采用第二种写法的脚本来回放,会产生一个错误 “Exception occured。”。使用描述性编程的方式,我也能确定QTP找到了这个Table控件,能返回正常的RowCount,但当使用描述性编程调用SelectCell,SelectRow,SelectColumn方法就会出错。
    出现这种情形,是什么原因导致的?高手达人请帮忙解释解释。感激不尽。

    目标程序:由.net 3.5开发,并使用DevExpress控件
    QTP版本:9.2
    OS:Windows 2003
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    2#
    发表于 2008-12-9 13:00:37 | 只看该作者
    运行 Msgbox  SwfWindow("abc").SwfTable("swfname:=xxx").Exist  看看SwfWindow("abc").SwfTable("swfname:=xxx")是否 存在
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
    发表于 2008-12-9 15:58:44 | 只看该作者
    SwfWindow("abc").SwfTable("def").SelectCell 0, "Title"

    SwfWindow("abc").SwfTable("swfname:=xxx").SelectCell 0, "Title"

    这两句本身就不相等。。。第一句虽然你只看到了SwfTable的一个属性值为def,但是对象库提那家的时候已经把其他相应属性也添加了也能唯一标识了,而你第二句话,纯粹是通过单一属性来查找,当然不一定能唯一标识了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2008-12-9 17:07:34 | 只看该作者
    "swfname:=xxx"必须能唯一标识名为“def”这个对象
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-4-2 12:39
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    5#
     楼主| 发表于 2008-12-9 17:15:16 | 只看该作者
    原帖由 walker1020 于 2008-12-9 13:00 发表
    运行 Msgbox  SwfWindow("abc").SwfTable("swfname:=xxx").Exist  看看SwfWindow("abc").SwfTable("swfname:=xxx")是否 存在

    肯定存在,能正常返回Msgbox  SwfWindow("abc").SwfTable("swfname:=xxx").RowCount的值。

    已用 Msgbox  SwfWindow("abc").SwfTable("swfname:=xxx").Exist  测试,得到True。

    原帖由 鹭岛 于 2008-12-9 15:58 发表
    SwfWindow("abc").SwfTable("def").SelectCell 0, "Title"

    SwfWindow("abc").SwfTable("swfname:=xxx").SelectCell 0, "Title"

    这两句本身就不相等。。。第一句虽然你只看到了SwfTable的一个属性值为def,但是对象库提那家的时候已经把其他相应属性也添加了也能唯一标识了,而你第二句话,纯粹是通过单一属性来查找,当然不一定能唯一标识了

    不能当唯一标识,能正常返回Msgbox  SwfWindow("abc").SwfTable("swfname:=xxx").RowCount的值么?
    并且我使用了多个属性来匹配控件的,回放还是出错 。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
    发表于 2008-12-10 09:05:41 | 只看该作者

    回复 5# 的帖子

    你可以先测试下两次重复操作,查看下属性,第一次和第二次有没有变化
    BS架构的经常属性值是变来变去的~~特别是NAME的值总是不固定,至少我们公司开发的很多BS架构的都是大部分属性的值不固定的,你试着用别的属性~~~我们公司开发的DELPHI的程序,我发现就window id、x、y的属性值不改变,其他的属性值,前后比较几乎全变了,每次都不一样。。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-4-2 12:39
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    7#
     楼主| 发表于 2008-12-10 09:58:43 | 只看该作者

    回复 6# 的帖子

    swfname  --  The object's name as set by the developer.
    swfname path  --  The full hierarchy of swfname with all parent objects.  
    swftypename  --  The full type name of the object.

    我用了上面3个属性来匹配控件,这几个属性,我觉得如果代码没变,随便怎么跑,都不会变吧。
    关键是在编写脚本,在获取属性,在QTP回放脚本,这几个过程中,都一直是把程序打开的,没有关闭,没有重启,没有重新加载。
    目标程序是C/S结构的。
    在同一次回放脚本时:
    SwfWindow("abc").SwfTable("swfname:=xxx").RowCount                               ---------- 执行通过
    SwfWindow("abc").SwfTable("swfname:=xxx").SelectCell 0, "Title"                ---------- 执行失败

    而且SwfTable中有很多行,也存在"Title"的列。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-4-2 12:39
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    8#
     楼主| 发表于 2008-12-10 18:08:24 | 只看该作者
    自己顶一下
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-15 14:09 , Processed in 0.079709 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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