2015-05-11 36 views
1

我正在使用Visual Relation Identifier(VRI)QTP,当我在对象存储库中添加源对象(请参阅代码)时它工作正常。但是,在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 "[email protected]" 
Set relation = Nothing 
Set rc = Nothing 

有什么办法避免对象存储库的依赖。如果没有,是否可以动态地将源对象加载到对象库中并且可以用于VRI?

感谢&问候,

Sreenisha斯里尼瓦森

回答

2

是的,这是可以做到,对于这样的一个API,请参阅 “HP QuickTest Professional的对象仓库自动化参考” 的在线帮助。

但是,您无法轻松地向已加载的OR添加新对象。从上面引述的强力霉素,这表示,它(几乎)所有:

注意:您可以使用对象仓库自动化对象模型 操作保存在文件系统共享对象库。如果 想要操纵质量 Center中存储的共享对象存储库,则必须下载共享对象存储库并将其保存到文件系统的 ,然后才能使用对象存储库自动化对象 模型对其进行操作。

这也意味着你需要下载(或定位)tsr文件,使用API​​操作它,卸载当前加载的ORs并重新加载它们。我发现这仅仅是为了创建一个简单的测试对象而产生的麻烦。

因此,下面的解决方法已被证明非常有用:

  • 准备一个“模板”或使用或主编的“锚”对象的权利类的条目。
  • 确保它包含要控制的所有TO属性,并将它们设置为任何值。
  • 也准备依赖于该测试对象的视觉关系。当你尝试在OR编辑器中查找测试对象时,这种视觉关系当然不起作用。
  • 然后在运行时,使用.setTOProperty以编程方式修改该测试对象的TO属性,以便在该实际情况下将其属性设置为您需要的值。

的视觉关系,将工作,那么即使TO的TestObject没有被固定在‘锚’的属性的值‘编译’时,并没有使用相当复杂或API,并且没有卸载/再OR文件。**

作为一个侧面说明,由于视觉关系的严重局限性,请考虑完全避免它们。迟早你想要一个视觉关系依赖于一个“锚”测试对象本身取决于视觉关系(不可能 - 严重的限制,我没有看到一个原因),迟早你生病了我列出的解决方案是因为它的间接性(它将您带回原始问题)。

另一种方法是创建等效于视觉关系的脚本代码,即获取“锚”测试对象的x和/或y位置,并通过“猜测”其x/y位置(或其他属性),使用描述性编程,通过Description对象,或使用.ChildObjects和某些代码枚举候选对象。

这与一些智能库库例程设计一起,创建了紧凑,可维护,可读的解决方案,没有OR依赖关系,并且没有视觉关系特性的固有限制。

相关问题