将类数组传递给QTP / VBScript中的操作参数

时间:2012-06-19 15:18:23

标签: vbscript action qtp

我的问题涉及使用QTP / VBScript。

目标:从qtp主起始文件中,初始化一个类数组,并通过参数将该数组作为参数传递给可重复使用的操作。

问题:我无法将一组类传递给可重复使用的操作。

详细信息:

我有两个文件:“application_main”“personal_action”

application_main是qtp / vbscript的入口点 personal_action是一个可重复使用的动作

在application_main中,我们调用了InvokeApplication,然后进行了一些其他的声明。

我可以初始化一个数组,然后继续将它作为参数从我的application_main传递给我的personal_action:

来自application_main:

Dim myArray
myArray = new Array(object1, object2, object3)
RunAction “personal_action”, oneIteration, myInteger, myBoolean, myArray

在personal_action页面上,我通过以下方式编辑参数属性:
编辑 - >动作 - > ActionProperties 。我选择了参数标签 在其中,我可以选择定义传入参数的数量和每个单独的类型。这些可用类型似乎仅限于:

字符串,布尔值,日期,数字,密码,任何

我将我的第一个参数设置为:数字
我将我的第二个参数设置为:Boolean
我将我的第三个参数设置为:任何

运行时,系统会提示我:

  

您在RunAction中为“myArray”参数指定的类型   语句与操作中定义的类型不匹配。

问题:我能够传递Number和Boolean,但是当涉及到一个数组时,qtp / vbscript似乎无法很好地处理它。为什么我无法通过主启动文件中的参数将数组传递给操作?这似乎是一项普通而简单的任务。我可以这么错吗?

感谢任何帮助。谢谢。

4 个答案:

答案 0 :(得分:3)

据我所知,QTP NOT 允许这样做。没有可用于表示Array的参数类型。这可能是QuickTest Professional的限制。

您可以将Array元素作为以分隔符分隔的字符串传递,而不是传递数组。

实施例: “Item1 ^ Item2 ^ ............”其中“^”是分隔符 然后你可以使用vb脚本的split函数来恢复你的数组。

再次对对象做同样的事情,我们必须尝试这个

答案 1 :(得分:0)

不确定您要做什么,更多代码可能会提供更好的主意。是否有理由需要整个数组而不仅仅是数组中的特定项?将数组拆分为项目可能是您最好的选择,但我再次确定您要完成的是什么。

答案 2 :(得分:0)

在你的行动中使用lib文件...... 在lib中创建数组public 但最终对于任何案例测试或互动vararray = null rodrigonw。 Sugestion ...使用函数将你的lib包含在你的动作中(lib路径)

答案 3 :(得分:0)

Lib soluction
''######################################LIB"
'lib Passsagem de valores entre array
Dim arrayyy()
Sub setArrayyy(strvalores,redimencionaArray)
  On error resume next 
  tamanho=UBound(arrayyy,1)
  If Err.Number=9 then 
   ReDim arrayyy(0)
   redimencionaArray=false
  end if
   err.Clear   
 On error goto 0
 If redimencionaArray Then 
  tamanho=tamanho+1
  ReDim  preserve arrayyy(tamanho)
 end if
 arrayyy(tamanho)=strvalores
 'arrayyy=arrayyy
End Sub

function getArrayyy()   getArrayyy=arrayyy End function

''######################################"'Action X

call setArrayyy("X",false)
call setArrayyy("A",true)
call setArrayyy("D",true)
call setArrayyy("B",true)
''######################################'Action y

x=getArrayyy()

for countx=0 to ubound(x)
msgbox x(countx)
next