51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

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

[原创] 求助,关于Object Repository

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2005-8-18 17:33:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我测试的产品中,会根据用户的输入生成一个用其命名的链接,然后需要点击该链接.
现在的问题是:在脚本运行之前该链接并不存在,所以我没法将它添加到Object Repository中,而到运行时就会出现如下错误
出错消息:The "user230847" Link object was not found in the Object Repository
请问各位高手,有没有什么办法让脚本在运行过程中将某个页面中的所有object都添加到Object Repository中,或是有其他好的解决办法.
谢谢.工作中遇到的问题,比较急.
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2005-8-18 21:45:05 | 只看该作者

对象抓如对象库后 还需要建立参数化

因为根据你用户不同 LINK的连接自然不同 这点要注意
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2005-8-19 10:05:22 | 只看该作者
应该可以用link的其他属性来找到这个link吧,比如index
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2005-8-19 11:09:50 | 只看该作者
Originally posted by hongtang at 2005-8-18 09:45 PM:
因为根据你用户不同 LINK的连接自然不同 这点要注意

我对你这句话的理解是这样的:
添加一个类似的链接到对象库,然后把text的值改成Regular Expression,比如user*,不知道这样理解对不对.
结果是错误仍然存在.
请继续指点,谢谢
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2005-8-19 11:12:09 | 只看该作者
Originally posted by lovetest6 at 2005-8-19 10:05 AM:
应该可以用link的其他属性来找到这个link吧,比如index

这个链接只有text不同,因为它是根据我添加的用户名来命名的,其他的属性都是相同的.
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2005-8-19 11:50:54 | 只看该作者
根据hongtang的提醒,已经找到解决办法了.
1.将新生成的用户名(例如:user12345)导出到表格;
2.在录制过程中添加一个已经存在的链接(例如:user00001)到对象库,然后修改它的text值,让它从表格中读新用户名(user12345);
3.在脚本中设计为点击链接user00001,但实际运行过程中,它将会点击新链接user12345.
谢谢hongtang和lovetest6的帮助.
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2005-8-19 17:00:50 | 只看该作者
用处理动态link的办法,SetTOProperty就可以了
比如:
iRowCount=4
For i=1 to iRowCount
  linksname=Browser("xxx").Page("xxx").WebTable("xxx").GetCellData(i, 1)
(这里的GetCellData(i, 1),我假设了连接在每行的第一列)
  linksname=cstr(linksname)
  Browser("xxx").Page("xxx").Link("xxx").SetTOProperty "text",linksname
  Browser("xxx").Page("xxx").Link("xxx").Click

Next        


http://bbs.51testing.com/viewthr ... ge=1&highlight=

如果简单的话,用index来引用不是更方便?哈哈。
录制的时候默认QTP是用名字来引用的。
如  Browser("xxx").Page("xxx").Link("xxx")....
改为  Browser("xxx").Page("xxx").Link("index:=2")....
多方便啊,呵呵,不过index属性你只能一个一个试出来了,好像GetTOProperty 得不到。

[ Last edited by lovetest6 on 2005-8-19 at 17:03 ]
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2005-8-21 00:08:30 | 只看该作者

聪明人~一点就透:)

聪明人~一点就透:)
斑竹的方法也很不错:)
回复 支持 反对

使用道具 举报

该用户从未签到

9#
 楼主| 发表于 2005-8-25 18:13:01 | 只看该作者
To:lovetest6
谢谢你的帮助,我觉得使用index的这种方法特别方便,因为在我测的产品中,我刚好可以从别的地方得到正确的这个index值.
不过还是有2个问题请教
1. Browser("xxx").Page("xxx").Link("index:=2")...可以工作正常,但因为我取到的index值是个变量,比如intIndex,这样的话Browser("xxx").Page("xxx").Link("index:=intIndex")...就肯定不对了.我试过了我所有能想到的方式,但还是没成功,只好又来请教版主了.
2."index:=2"中 ":="是一种什么表达式,赋值or对比?VBscript中似乎没这种操作符啊?我在QTP的帮助中也没找到.
请版主或其他高手指教,谢谢
回复 支持 反对

使用道具 举报

该用户从未签到

10#
 楼主| 发表于 2005-8-25 22:23:40 | 只看该作者
第一个问题已经找到解决方案了
Browser("xxx").Page("xxx").Link("index:="&intIndex)...
不过不太能理解
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2005-8-26 18:55:15 | 只看该作者
呵呵,li那第二个问题也应该可以理解了啊。
我记得pascl中就有:=的付值方式吧?还有delphi中。
总之达到你的目的了,我也不能理解为什么MI在这里用:=而不直接用=。

MI也给了如下的一个例子,如果你觉得不能接受,可以多写几行。呵呵。
自己看着能清楚些:)

  1. Browser("Mercury Tours").Page("Mercury Tours").WebElement("Name:=UserName", "Index:=0").Click

  2. or

  3. set WebObjDesc = Description.Create()

  4. WebObjDesc("Name").Value = "UserName"

  5. WebObjDesc("Index").Value = "0"

  6. Browser("Mercury Tours").Page("Mercury Tours").WebElement(WebObjDesc).Click
复制代码

[ Last edited by lovetest6 on 2005-8-26 at 18:59 ]
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2005-8-26 18:58:00 | 只看该作者
另外
在MI的Help中
有以下一段话,

Note: WebElement("Name:=UserName", "Index:=0") If there is only one object, using index=0 will not retrieve it. You should not include the index property in the object description.


我没看明白,是不是他也少写了一个冒号啊?呵呵。

BTW:在help中查找"the index property in the object description"
即可看到这段。

另外似乎Help中也只是说....如下,并没有说为什么。
To add the WebElement object to your script manually, you can provide a unique description for the object using the following descriptive programming syntax:

WebElement ("object_identifier1 := identifier1_value" , "..." ,
"object_identifierX := identifierX_value")

Use as many identifier definitions as necessary to provide a unique description.  For more information on descriptive programming syntax, refer to the QuickTest User's Guide.

[ Last edited by lovetest6 on 2005-8-26 at 19:08 ]
回复 支持 反对

使用道具 举报

该用户从未签到

13#
 楼主| 发表于 2005-8-26 23:41:10 | 只看该作者
谢谢版主,学到了不少,而且非常有用
谢谢
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2009-12-14 14:58:40 | 只看该作者
不明白6楼版本的那个方法,第1句:将新生成的用户名(例如:user12345)导出到表格;

啥意思呀?
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

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

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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