51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3152|回复: 6
打印 上一主题 下一主题

[原创] 如何使QTP代码不以对象名识别

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-6-20 15:28:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
此版本的链接名显示为“增加酒店”,可是此应用程序的版本做更新后,链接名会改变,如何将QTP设置不以“对象名”为识别呢? 现代码如下
With .Frame("mainFrame")
                .Link("增加酒店").Click
        End With
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2007-6-20 15:42:16 | 只看该作者
Link("增加酒店")上右键看属性,选择需要的就可以了。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2007-6-20 16:16:29 | 只看该作者
原帖由 Jimmyshao 于 2007-6-20 15:42 发表
Link("增加酒店")上右键看属性,选择需要的就可以了。


嗯,有试过这么做,可是增删完毕,改用html_id来做为识别,只是代码仍没改变,是怎么回事??
回复 支持 反对

使用道具 举报

  • TA的每日心情
    奋斗
    2022-7-13 15:22
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    4#
    发表于 2007-6-20 16:51:33 | 只看该作者
    我也想知道。

    作了个实验:
    录制脚本:
    SystemUtil.Run "C:\Program Files\Internet Explorer\iexplore.exe","","C:\Documents and Settings\jie.wu","open"
    Browser("Browser").Page("Page").Sync
    Browser("Browser").Navigate "http://www.sina.com.cn/"
    Browser("Browser").Page("新浪首页").Sync


    browser("Browser").Page("新浪首页").Link("房产").Click
    Browser("Browser").Page("上海房产_新浪网").Sync



    然后试图用其他的属性来识别link("房产")
    用spy 检测到 link("房产") 的url为:http://house.sina.com.cn/

    那么就用:
    browser("Browser").Page("新浪首页").Link("url:=http://house.sina.com.cn/").Click
    来识别,失败,不知道为什么原因??有高手能帮我解决吗?

    最后只能
    Browser("Browser").Navigate"http://house.sina.com.cn/"
    Browser("Browser").Page("上海房产_新浪网").Sync
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
    发表于 2007-6-20 17:03:07 | 只看该作者
    代码是不需要变的,因为那只是一个对象名字而已。被测的页面上原来的链接是"增加酒店",现在版本升级了以后链接的显示文字变了。
    QTP脚本里面显示的Link("增加酒店"),这里的"增加酒店"只是QTP识别那个Link以后给它起的名字而已。

    QTP在自动识别对象的时候,会用它认为用户最容易识别的方式给对象命名。就像这个Link,QTP是用原有版本中页面链接的显示文字作为他的名字。换句话说,这个只是给你看的;
    QTP运行时真正用来识别对象的则是你改动的html_id,那些信息让QTP唯一确定一个对象;

    QTP识别了一个对象以后,不会再改动它的名字了。如果需要改对象的名字,你可以到对象仓库里面找到这个对象并手工修改一个通用的名字,或者改为和现在的页面显示内容一致。编辑了对象之后,代码应该相应更新的。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
     楼主| 发表于 2007-6-21 16:24:49 | 只看该作者
    原帖由 winfood 于 2007-6-20 17:03 发表
    代码是不需要变的,因为那只是一个对象名字而已。被测的页面上原来的链接是"增加酒店",现在版本升级了以后链接的显示文字变了。
    QTP脚本里面显示的Link("增加酒店"),这里的"增加酒店"只是QTP识别那个Link以后 ...


    好的,谢谢~~
    可是有时从下拉菜单的操作,找不到可识别的对象来代替文字,有什么好方法吗?
    界面如贴图~~,录制的代码如下:
    With .Frame("mainFrame_4")
         .WebList("_idJsp6:certTypeId").Select "学生证"
       .WebEdit("_idJsp6:certNo").Set "312334456708097"
      .WebButton("添加").Click
    End With
    若是现在此应用程序被更新,下拉菜单下的“学生证”已更新为“身份证”,则再次运行此脚本,QTP报错。可是找不到其它可以可代替的对象属性控件,用object spy找到的对象属性如(图22)~~,有没什么办法可以解决这个问题呢??

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2007-6-21 16:43:36 | 只看该作者
    原帖由 xlewy 于 2007-6-21 16:24 发表


    好的,谢谢~~
    可是有时从下拉菜单的操作,找不到可识别的对象来代替文字,有什么好方法吗?
    界面如贴图~~,录制的代码如下:
    With .Frame("mainFrame_4")
         .WebList("_idJsp6:certTypeId").Select ...

    这是对象识别的问题,你的问题就是版本更新之后WebList中的各项顺序或者内容发生变化了,所以QTP识别不到了;
    解决的方法从论坛上搜一下,已经讨论多次了。最简单的办法就是把识别WebList对象用的innerText、innerHtml从识别条件里面去掉,这样QTP识别WebList就不依赖它的内容了
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-14 13:15 , Processed in 0.074647 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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