用C#控制QTP测试(返回类型错误)

时间:2013-07-02 08:02:39

标签: c# qtp

我遇到一个有关无效类型的返回参数的问题。

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

为此,我使用库“QTObjectModelLib”进行开放/运行QTP测试,得​​到结果,在C#中

为了检索我的所有对象,我在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(); "

同样的问题......

是否有任何机构有解决方案:)?

非常感谢。

西里尔。

1 个答案:

答案 0 :(得分:1)

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

  

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

这个以及其他非显而易见的事实会导致您遇到的类型转换问题。

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

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