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

标签 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

因此,我可以直接访问第一个参数的数组列表,但不能访问第二个参数。这越来越奇怪了。

更新:

按照...的建议进行一些调试

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,它就可以正常工作。或者,正如已经提到的,在使用它之前将其复制到变量中。

最佳答案

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

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 的建议进行调试。

关于VBScript 和 QTP - ArrayList 与变量的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19874037/

相关文章:

asp-classic - VBScript 函数可以返回字典吗?

IIS 7/Pure ASP 文件上传问题

windows - 最小化其他应用程序的批处理文件

regex - 正则表达式单词粘在一起

search - HTA - 如何通过单击按钮触发查找对话框?

Java:在读取和格式化文本文件时保留前导零

java - 使用java按指定顺序排列arrayList的值

android - ListView 仅显示 ArrayList(HashMap) 的最后一个元素

.net - 如何用QTP实现巡航控制?

java - QTP 脚本 |如何仅使用其类类型(如 JavaWindow)获取某个打开窗口的对象,而不指定其标题