51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2771|回复: 13
打印 上一主题 下一主题

[原创] 新手请教

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2006-11-9 15:52:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在录制某个桌面应用程序的时候 脚本代码如下:
Window("XX").Restore
Window("XX").WinToolbar("ToolbarWindow32").Press 1  '新建一个文件
Window("XX").WinObject("SWT_Window0").Click 536,367  '选中文件中某个对象

每次新建一个文件 生成的SWT_Window0的ID都 不一样,是随机的,因此不能回放,通过参数化可以解决吗?怎么解决啊? 先谢谢了啊
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

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

    连续签到: 1 天

    [LV.1]测试小兵

    2#
    发表于 2006-11-9 16:42:06 | 只看该作者
    SWT_Window0的ID 应该是录制 脚本的时候 ,QTP为了识别脚本 而自动产生的数字吧。 这个不算是问题吧。 只要是录制的脚本能回放 就可以了。 另外 请参考 QTP Tutorail 文档
    回复 支持 反对

    使用道具 举报

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

    连续签到: 1 天

    [LV.1]测试小兵

    3#
    发表于 2006-11-9 16:44:20 | 只看该作者
    你说的 "不能回放" ,我想不回是因为 SWT_Window0的ID都不一样的原因引起的,你到对象库里面 看看 录制时的对象属性和 运行时的属性分别是什么。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
     楼主| 发表于 2006-11-9 17:09:07 | 只看该作者
    除了 window id 和 hwhd (= window id )不一样 其他的都一样啊
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
     楼主| 发表于 2006-11-9 17:44:41 | 只看该作者
    可是如果我在回放的时候 把 库里的window id 改成 回放的 当前的对象的window id  就可以正确回放了.有什么方法 可以自动修改库里的window id 吗?
    回复 支持 反对

    使用道具 举报

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

    连续签到: 1 天

    [LV.1]测试小兵

    6#
    发表于 2006-11-10 09:15:38 | 只看该作者
    对对象库中的 SWT_Window0的ID 属性 用正则表达式 来表示

    [ 本帖最后由 walker1020 于 2006-11-10 09:17 编辑 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
     楼主| 发表于 2006-11-10 11:35:44 | 只看该作者
    ID 不能用正则表达式啊  constant value options是灰的 我现在的情况跟 录制ECLIPSE编辑器的情况差不多 ,重新打开一个编辑器 ID就变了 这样的话需要每次在回放的时候 改ID 可是QTP好象又不能一次性 修改整个 测试的所有ID,只能一次性修改每个ACTION中的ID 这样如果以后脚本录的多了就太麻烦了 sdlkfj9

    然后 我想不用ID来标识,改用abs X 、Y或者其他的 可是都行不通,提示The "SWT_Window0" object's description matches more than one of the objects currently displayed in your application. Add additional properties to the object description in order to uniquely identify the object.只能加ID.
    还有什么可以解决的办法吗?
    还想请教一下 类似于ECLIPSE这样的产品 用QTP测试桌面程序 合适吗?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
    发表于 2006-11-10 12:28:57 | 只看该作者
    正则表达式+描述性编程行不行?
    这是我从帮助文档中找到的
    set MyDesc = Description.Create()
    MyDesc("PropName").Value = PropValue
    MyDesc("PropName").RegularExpression = False
    不知道对解决这类问题有没有启发
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
     楼主| 发表于 2006-11-10 16:15:30 | 只看该作者
    我现在采用的方案是把库的模式设置成SHARED,把库里所有的SWT_WINDOW0的NAME都改为同一个,然后在库里把SWT_WINDOW0的ID手动修改为当前的打开程序中的对象的ID,然后回放的时候就只在这一个上跑,每跑完一个功能就给它还原到开始时候的状态.感觉操作起来还是有点很麻烦(而且感觉自己的想法很幼稚).
        本来我试了下 想通过编程在新建之后获得当前程序中对象的ID,再把这个ID SET到库里,可是好象也行不通啊,在获取之前根本识别不了.
         
    真心的谢谢两位版主和前辈们 ,还希望继续给我建议,我自己也尽量的多去看一些资料,希望能尽快解决这个问题.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
     楼主| 发表于 2006-11-10 16:27:12 | 只看该作者
    Window("XX").Activate
    Window("XX").WinToolbar("ToolbarWindow32").Press 1 '新建一个文件
    get_id = Window("XX").WinObject("SWT_Window0").GetROProperty("window id") '获取当前应用程序中对象的ID
    Window("XX").WinObject("SWT_Window0").SetTOProperty "window id", set_id '将库中的对象的ID修改成当前程序中对象的ID
    Window("XX").WinObject("SWT_Window0").Click 552,374


    好象是因为QTP无法识别当前对象,所以没办法去自动获取当前的ID,感觉这个好矛盾啊,如果想自动获取,应该怎么去实现呢?
    回复 支持 反对

    使用道具 举报

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

    连续签到: 1 天

    [LV.1]测试小兵

    11#
    发表于 2006-11-11 21:20:18 | 只看该作者

    试试下面的方法

    首先你要找到 SWT_Window0的ID 的变化规律,然后 根据此规律,在对象库里 用正则表达式来表示ID;同时 修改用来识别SWT_Window0的属性,去掉ID(如果以前用来识别的属性里面有Id的话),增加一些别的此对象不变的属性。总之只要是能唯一识别出此对象即可。

    另外一种方法是使用 SetTOProperty 函数。

    [ 本帖最后由 walker1020 于 2006-11-12 10:39 编辑 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
    发表于 2006-11-13 16:23:15 | 只看该作者
    - -高手之间的切磋。。。有学到一些东西。。。正则表达式对没有规律的名称如何做,我也遇到了这个问题,无法使用正则表达式的时候怎么办。。。
    回复 支持 反对

    使用道具 举报

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

    连续签到: 1 天

    [LV.1]测试小兵

    13#
    发表于 2006-11-14 11:31:59 | 只看该作者
    如果实在无法用QTP来测试某个对象, 那就人工去测试吧。毕竟工具不是万能的。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    14#
    发表于 2006-11-14 16:14:45 | 只看该作者
    原帖由 walker1020 于 2006-11-14 11:31 发表
    如果实在无法用QTP来测试某个对象, 那就人工去测试吧。毕竟工具不是万能的。

    正确
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-25 18:26 , Processed in 0.087219 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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