51Testing软件测试论坛

标题: 如何使QTP代码不以对象名识别 [打印本页]

作者: xlewy    时间: 2007-6-20 15:28
标题: 如何使QTP代码不以对象名识别
此版本的链接名显示为“增加酒店”,可是此应用程序的版本做更新后,链接名会改变,如何将QTP设置不以“对象名”为识别呢? 现代码如下
With .Frame("mainFrame")
                .Link("增加酒店").Click
        End With
作者: Jimmyshao    时间: 2007-6-20 15:42
Link("增加酒店")上右键看属性,选择需要的就可以了。
作者: xlewy    时间: 2007-6-20 16:16
原帖由 Jimmyshao 于 2007-6-20 15:42 发表
Link("增加酒店")上右键看属性,选择需要的就可以了。


嗯,有试过这么做,可是增删完毕,改用html_id来做为识别,只是代码仍没改变,是怎么回事??
作者: rivermen    时间: 2007-6-20 16:51
我也想知道。

作了个实验:
录制脚本:
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
作者: winfood    时间: 2007-6-20 17:03
代码是不需要变的,因为那只是一个对象名字而已。被测的页面上原来的链接是"增加酒店",现在版本升级了以后链接的显示文字变了。
QTP脚本里面显示的Link("增加酒店"),这里的"增加酒店"只是QTP识别那个Link以后给它起的名字而已。

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

QTP识别了一个对象以后,不会再改动它的名字了。如果需要改对象的名字,你可以到对象仓库里面找到这个对象并手工修改一个通用的名字,或者改为和现在的页面显示内容一致。编辑了对象之后,代码应该相应更新的。
作者: xlewy    时间: 2007-6-21 16:24
原帖由 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)~~,有没什么办法可以解决这个问题呢??
作者: winfood    时间: 2007-6-21 16:43
原帖由 xlewy 于 2007-6-21 16:24 发表


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

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




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