求助,关于Object Repository
我测试的产品中,会根据用户的输入生成一个用其命名的链接,然后需要点击该链接.现在的问题是:在脚本运行之前该链接并不存在,所以我没法将它添加到Object Repository中,而到运行时就会出现如下错误
出错消息:The "user230847" Link object was not found in the Object Repository
请问各位高手,有没有什么办法让脚本在运行过程中将某个页面中的所有object都添加到Object Repository中,或是有其他好的解决办法.
谢谢.工作中遇到的问题,比较急.
对象抓如对象库后 还需要建立参数化
因为根据你用户不同 LINK的连接自然不同 这点要注意 应该可以用link的其他属性来找到这个link吧,比如index Originally posted by hongtang at 2005-8-18 09:45 PM:因为根据你用户不同 LINK的连接自然不同 这点要注意
我对你这句话的理解是这样的:
添加一个类似的链接到对象库,然后把text的值改成Regular Expression,比如user*,不知道这样理解对不对.
结果是错误仍然存在.
请继续指点,谢谢 Originally posted by lovetest6 at 2005-8-19 10:05 AM:
应该可以用link的其他属性来找到这个link吧,比如index
这个链接只有text不同,因为它是根据我添加的用户名来命名的,其他的属性都是相同的. 根据hongtang的提醒,已经找到解决办法了.
1.将新生成的用户名(例如:user12345)导出到表格;
2.在录制过程中添加一个已经存在的链接(例如:user00001)到对象库,然后修改它的text值,让它从表格中读新用户名(user12345);
3.在脚本中设计为点击链接user00001,但实际运行过程中,它将会点击新链接user12345.
谢谢hongtang和lovetest6的帮助. 用处理动态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/viewthread.php?tid=11757&fpage=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 ]
聪明人~一点就透:)
聪明人~一点就透:)斑竹的方法也很不错:) 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的帮助中也没找到.
请版主或其他高手指教,谢谢 第一个问题已经找到解决方案了
Browser("xxx").Page("xxx").Link("index:="&intIndex)...
不过不太能理解 呵呵,li那第二个问题也应该可以理解了啊。
我记得pascl中就有:=的付值方式吧?还有delphi中。
总之达到你的目的了,我也不能理解为什么MI在这里用:=而不直接用=。
MI也给了如下的一个例子,如果你觉得不能接受,可以多写几行。呵呵。
自己看着能清楚些:)
Browser("Mercury Tours").Page("Mercury Tours").WebElement("Name:=UserName", "Index:=0").Click
or
set WebObjDesc = Description.Create()
WebObjDesc("Name").Value = "UserName"
WebObjDesc("Index").Value = "0"
Browser("Mercury Tours").Page("Mercury Tours").WebElement(WebObjDesc).Click
[ Last edited by lovetest6 on 2005-8-26 at 18:59 ] 另外
在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 ] 谢谢版主,学到了不少,而且非常有用
谢谢 不明白6楼版本的那个方法,第1句:将新生成的用户名(例如:user12345)导出到表格;
啥意思呀?
页:
[1]