我正在研究视觉关系标识符(VRI)QTP,当我在对象存储库中添加源对象(请参阅代码)时,它工作正常。但是,在QTP帮助文件中,它提到: “指定的对象必须是测试对象存储库中的对象。它不能是程序描述指定的测试对象。”
我使用的代码是:
Set rc = VisualRelations.Create
Set relation = rc.Add
'****(Source Object)
relation.relatedobjectpath = "Browser(""Oracle | PeopleSoft Enterprise"").Page(""Oracle | PeopleSoft Enterprise"").WebElement(""User ID:"")"
relation.relativeposition = micRelLeft
relation.setargument micrelinline, True
Set des=Description.Create
des.Add "micclass","WebEdit"
des.Add "visual relations",rc
'****(Target Object)
Browser("name:=Oracle.*").Page("title:=Oracle.*").WebEdit(des).set "qtpuser@abc.com"
Set relation = Nothing
Set rc = Nothing
有没有办法避免对象存储库的依赖。如果没有,是否可以动态地将源对象加载到对象存储库,并且可以用于VRI?
谢谢&的问候,
Sreenisha Sreenivasan
答案 0 :(得分:2)
是的,可以这样做,有一个API,请参阅在线帮助中的“HP QuickTest Professional对象存储库自动化参考”。
但是,您无法轻松地将新对象添加到已加载的OR中。从dox上面引用,这表示(几乎)全部:
注意:您可以使用Object Repository自动化对象模型 操纵保存在文件系统中的共享对象存储库。如果你 想要操纵存储在Quality中的共享对象存储库 中心,您必须下载共享对象存储库并将其保存到 在使用Object Repository自动化对象之前,文件系统 模型来操纵它。
这也意味着您需要下载(或定位)tsr文件,使用API对其进行操作,卸载当前加载的OR,然后重新加载它们。我发现创建一个简单的测试对象太麻烦了。
因此,以下解决方法已证明非常有用:
.setTOProperty
以编程方式修改该testobject的TO属性,以便将其属性设置为您在实际情况下需要的值。 即使“锚”测试对象的TO属性值未在“编译”时修复,并且没有使用相当复杂的OR API,也没有卸载/重新加载OR文件,视觉关系将起作用。* *
作为旁注,由于视觉关系的严重限制,请考虑完全避免它们。迟早你想要一个视觉关系依赖于一个“锚”测试对象,它本身依赖于视觉关系(不可能 - 严重的限制,我没有看到理由),迟早你会厌倦我所概述的解决方案,因为它的间接性质(这会让你回到原来的问题)。
另一种方法是创建相当于视觉关系的脚本代码,即获取“anchor”testobject的x和/或y位置,并通过“猜测”为相关对象创建描述“它的x / y位置(或其他属性)使用描述性编程,通过Description
对象,或使用.ChildObjects
和一些代码枚举候选对象。
通过一些智能基础库例程设计,可以创建紧凑,可维护,可读的解决方案,无需依赖OR,并且没有视觉关系功能固有的限制。