1

我面临一个关于返回参数的问题,其类型无效。

我的目标是检索任何 QTP 操作(组合框、文本区域等)的所有对象,以便在 Visual Studio 中对其进行测试。

为此,我使用库“QTObjectModelLib”在 C# 中打开/运行 QTP 测试,获取结果

为了检索我的所有对象,我在 QTP 安装目录中找到了这个 dll “REPOSITORYUTILLib”。

这种空气操作,

我创建我的对象

private ObjectRepositoryUtilClass testss = new ObjectRepositoryUtilClass();

当我测试这个时:

 testss.Load(@"D:\RepoTest.tsr");

 TOCollection collection =  testss.GetAllObjects();

或这个 :

testss.Load(@"D:\RepoTest.tsr");

 TOCollection collection =  testss.GetAllObjects("SwfWindow('Continent')");

我正面临这个例外:

“ System.InvalidCastException :返回参数的类型无效。”

我还尝试通过操作加载我的存储库:

 "testss.LoadActionRepository(constanteRef.QTPTestPath, action.name);

  TOCollection collection =  testss.GetAllObjects(); "

同样的问题...

有没有人有解决方案:)?

非常感谢。

西里尔。

4

1 回答 1

1

来自http://www.sqaforums.com/showflat.php?Number=438836&page=0

不幸的是,Mercury 在其 COM 接口中广泛使用了 Variant 类型,而这正是 Interop 似乎经常扼杀的东西。

这和其他不明显的事实会导致您遇到类型转换问题。

关键思想是通过反射调用 QTP 例程,例如 la testObject.GetType().InvokeMember(),有关详细信息,请参阅线程链接。

此外,如果您有有效的支持协议:曾经有一篇知识库文章http://support.openview.hp.com/selfsolve/document/KM916723 ...该 ID 可能会导致更新版本。

于 2013-07-02T20:13:57.143 回答