VBScript和QTP - ArrayList与变量的奇怪行为

时间:2013-11-09 08:38:22

标签: vbscript arraylist qtp

这可能是不言自明的,但我真的不明白。

如果我尝试直接使用ArrayList中的值,使用QTP的LoadAndRun函数,它就不起作用。但是,如果我首先将ArrayList中的值复制到变量中,那么它就可以工作。

这有效:

test1 = testActionArray(1)(0)
test2 = testActionArray(1)(1)

LoadAndRunAction "C:\share\Test Automation\Flight Reservation Application\UFT Tests\" &
test1,test2, oneIteration

但这不起作用:

LoadAndRunAction "C:\share\Test Automation\Flight Reservation Application\UFT Tests\" &
testActionArray(1)(0),testActionArray(1)(1), oneIteration

为什么?

它彻底破坏了我的代码的动态。

更新: 我刚发现这件事起作用了:

LoadAndRunAction "C:\share\Test Automation\Flight Reservation Application\UFT Tests\" & 
testActionArray(1)(0),test2, oneIteration

所以,我可以直接访问arraylist以获取FIRST参数,但不是第二个参数。这变得越来越奇怪。

更新:

根据......建议进行一些调试。

MsgBox  "1-0: " & testCaseList(y)(z)(0) & " [" & TypeName(testCaseList(y)(z)(0)) & "]"
MsgBox  "1-1: " & testCaseList(y)(z)(1) & " [" & TypeName(testCaseList(y)(z)(1)) & "]"

这会产生:

1-0: Open_Close[Range]
1-1: CloseAllInstnces[Range]

就可能看到的而言,绝对100%正确。如果我只是硬编码1-1,它工作正常。或者,如前所述,在使用之前将其复制到变量中。

2 个答案:

答案 0 :(得分:1)

我尝试以相同的方式执行,即从arraylist访问它,它对我有用!

Set a = CreateObject("System.Collections.ArrayList")
Set b = CreateObject("System.Collections.ArrayList")
Set c = CreateObject("System.Collections.ArrayList")
b.add("CON005 - TC001 Validate Exchange - Purchase Contract Headers")
b.add("Cleanup")
c.add("CON005 - TC002 Validate Exchange - Purchase Contract Lines")
c.add("Cleanup")
a.add(b)
a.add(c)
LoadAndRunAction "X:\Test_Scripts\Contract\"& a(0)(0),a(0)(1),oneIteration

我不确定该问题是什么,但请尝试按照PatricK的建议进行调试..

答案 1 :(得分:1)

试试这个: -

  

LoadAndRunAction“C:\ share \ Test Automation \ Flight Reservation Application \ UFT Tests \”&   eval(testActionArray(1)(0)),eval(testActionArray(1)(1)),oneIteration