我遇到一个有关无效类型的返回参数的问题。
我的目标是检索任何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(); "
同样的问题......
是否有任何机构有解决方案:)?
非常感谢。
西里尔。
答案 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可能会导致更新版本。