QTP中的视觉关系标识符

时间:2014-01-02 13:50:54

标签: vbscript qtp

我在QTP中使用视觉关系标识符来设置webedit中的值。这是我的代码

Set rc = VisualRelations.Create
Set relation = rc.Add 
relation.relatedobjectpath = "Browser(""ABC"").Page(""XYZ"").WebElement(""innertext:=E-Mail ID"")"
relation.relativeposition = micRelLeft
relation.setargument micrelinline, True
Set des=Description.Create
des.Add "micclass","WebEdit"
des.Add "visual relations",rc
Browser("ABC").Page("XYZ").WebEdit(des).set "qtpuser@abc.com"
Set relation = Nothing
Set rc = Nothing

问题是当我在第3行使用webElement的描述编程时,QTP显示错误消息“无法找到”webedit“对象父”。但是,当我在OR中存储webelement“电子邮件ID”时,代码工作正常,没有任何错误。

请您告诉我在这种情况下我该怎么办才能解决问题。 在此先感谢:)

2 个答案:

答案 0 :(得分:1)

QTP中似乎存在一个限制,即VRI中的锚测试对象必须位于对象存储库中。

值得庆幸的是,有一种解决方法,您可以在OR中创建一个虚拟锚测试对象,其中包含空白 innertext 的描述(通过使用定义新测试对象按钮)。

Screen shot of object repository

然后使用SetTOProperty获取您可以通过描述性编程实现的动态行为。

Set rc = VisualRelations.Create
Set relation = rc.Add 
Browser("ABC").Page("XYZ").WebElement("Anchor").SetTOProperty "innertext", "E-Mail ID"
relation.relatedobjectpath = "Browser(""ABC"").Page(""XYZ"").WebElement(""Anchor"")"
relation.relativeposition = micRelLeft
relation.setargument micrelinline, True
Set des=Description.Create
des.Add "micclass","WebEdit"
des.Add "visual relations",rc
Browser("ABC").Page("XYZ").WebEdit(des).set "qtpuser@abc.com"
Set relation = Nothing
Set rc = Nothing

答案 1 :(得分:0)

存储WebElement"电子邮件ID"在OR中,其父页面("" XYZ"")也将存储在OR中。 问题是OR方式用于标识Page,但DP方式用于标识WebElement。如果删除WebElement"电子邮件ID"但仍然是页面(" XYZ"),脚本应该运行良好。