51Testing软件测试论坛

标题: 如何在QTP中调用.net控件的方法 [打印本页]

作者: blueseach    时间: 2009-5-31 15:58
标题: 如何在QTP中调用.net控件的方法
这个问题已经困扰了我好些天,希望能得到各位高手的指点,多谢先!

在我们测试的软件中,用到很多.net的第三方控件,其中有一个是DevComponents.DotNetBar,是一种工具条,在QTP中被识别为swfobject.录制生成的语句如下
SwfWindow("Form1").SwfObject("bar1").Click 27,12   '点击其中一个按钮


在vs 2005中看到DevComponents.DotNetBar有GetItems方法,用来获取工具条中的某些符合要求的按钮,该方法有三种重载:
bar.GetItems(string ItemName);
bar.GetItems(string ItemName,Type itemType);
bar.GetItems(string ItemName,Type itemType,bool useGlobalName);

在.net中,该方法可以这样使用
bar1.GetItems("buttonItem2", typeof(DevComponents.DotNetBar.ButtonItem)),返回的是一个按钮的数组


而在QTP中我用Set bar=SwfWindow("Form1").SwfObject("bar1").Object 得到对应的Object,然后输入bar.,后面自动出现的属性和方法列表,包括下面这三个
bar.GetItems(ItemName)
bar.GetItems1(ItemName,itemType)
bar.GetItems2(ItemName,itemType,useGlobalName)

我想应该是把.net里面的GetItems方法分别映射成了以上的,把相同的方法名改成了GetItems1和GetItems2。现在的问题是,如果想调用其中的第二种GetItems方法,是应该用bar.GetItems(string ItemName,Type itemType)还是
bar.GetItems1(ItemName,itemType)?

两种都试过,都没有成功。在QTP中识别出的方法,参数都只是一个名称,没有指定数据类型,我不知道里面的第二个参数itemType 该怎么传递?在VBS里面并没有Type这样一种数据类型,怎么构造出一个指定的Type并传递给方法呢?
.net控件里面应该有很多方法都是带了些复杂的数据类型作为参数,这种情况应该也是常见的吧?
作者: aslandhu    时间: 2009-6-1 00:04
这个问题可以关注一下,等待高人出现。
其实我觉着嘛,复杂的数据类型貌似传不了。
作者: ziheng198688    时间: 2009-6-5 16:56
关注中 期待高手出现
作者: lijinshui    时间: 2009-6-6 16:02
可以的
我现在的项目中用到了一堆第三方控件,刚开始的时候我也是特麻烦,在52Test上面问
后来用描述性编程仔细观察每个bar的特点,对了,我这里有很多个Bar 位置都是可以移动的,
静下心来,多做实验肯定可以的,别灰心




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2