以编程方式将对象添加到qtp本地存储库

时间:2015-05-11 10:12:45

标签: qtp

我正在研究视觉关系标识符(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

1 个答案:

答案 0 :(得分:2)

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

但是,您无法轻松地将新对象添加到已加载的OR中。从dox上面引用,这表示(几乎)全部:

  

注意:您可以使用Object Repository自动化对象模型   操纵保存在文件系统中的共享对象存储库。如果你   想要操纵存储在Quality中的共享对象存储库   中心,您必须下载共享对象存储库并将其保存到   在使用Object Repository自动化对象之前,文件系统   模型来操纵它。

这也意味着您需要下载(或定位)tsr文件,使用API​​对其进行操作,卸载当前加载的OR,然后重新加载它们。我发现创建一个简单的测试对象太麻烦了。

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

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

即使“锚”测试对象的TO属性值未在“编译”时修复,并且没有使用相当复杂的OR API,也没有卸载/重新加载OR文件,视觉关系将起作用。* *

作为旁注,由于视觉关系的严重限制,请考虑完全避免它们。迟早你想要一个视觉关系依赖于一个“锚”测试对象,它本身依赖于视觉关系(不可能 - 严重的限制,我没有看到理由),迟早你会厌倦我所概述的解决方案,因为它的间接性质(这会让你回到原来的问题)。

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

通过一些智能基础库例程设计,可以创建紧凑,可维护,可读的解决方案,无需依赖OR,并且没有视觉关系功能固有的限制。