假设我将 a 传递Browser("MyBrowser").Page("MyPage").WebCheckBox("MyBox")
给一个函数:
MyFunction (Browser("MyBrowser").Page("MyPage").WebCheckBox("MyBox"))
稍后,该函数想要记录接收到的测试对象的逻辑名称(在这种情况下,当然是“MyBox”)。
它怎么可能做到这一点?
如果您重新添加测试对象,“名称”测试对象属性会返回构建的名称。 逻辑名称没有(记录的)测试对象属性。 运行时对象属性不可能包含名称,因为它不是来自 AUT GUI 的名称。
所以我认为测试对象不知道它的名字。只有存储库“知道”测试对象存储在哪个名称下。
所以我将不得不检查存储库本身,而不是测试对象。
ObjectRepositoryUtil
API 允许我(通过或GetChildren
其他方法)在存储库的测试对象集合中找到测试对象,并使用该GetLogicalName
方法获取其名称。美好的。
但是让它工作的唯一方法是通过加载它来获取对存储库的引用。我的印象是这个 API 旨在从 QTP 外部而不是在测试运行中操作(或分析)存储库。我不想重新加载存储库。我想在已加载的存储库之一中查找测试对象。
API 可以告诉我哪些已加载(通过它们的RepositoriesCollection
名称和路径),但它不提供获取对代表其中一个存储库的对象实例的引用的方法。
那么如何获得对已加载存储库的引用,以便我可以使用GetLogicalName
?
或者一般问:给定对包含在当前操作的共享存储库中的“正常”测试对象的引用,我如何以编程方式找出它的逻辑名称?
如果有一些超级明智的 QTP 向导 a la Motti 知道这是不可能的,我真的很感激他的回答,即使它显示“它不能完成”如果这是真的。