我正在使用 QTP 11.0,它使用 VBScript 作为它的“语言”。
我有以下四行代码:
For x = 1 to 8
msgbox(x)
update1 = SwfWindow("NextGen File Maintenance").SwfWindow("SIM Library Configuration").SwfObject("spreadCtl").Object.ActiveSheet.GetValue(x,2)
Next
返回值为:
1 3个 3个 3个 3个 3个 ...永远
我似乎无法在 vbscript for 循环中使用计数器变量而不会以某种方式损坏它 - 无论变量的名称是什么。我什至尝试将 X 分配给另一个变量并在我的 GetValue 语句中使用它但没有成功。
我在这里错过了一些非常简单的东西吗?谷歌上没有关于 vbscript For 循环的文档暗示任何不同的用法。我也没有发现任何关于 QTP 的内容。
谢谢,
杰森
这很奇怪,我假设如果你删除循环中的第二行并且只留下
MsgBox
然后 x
正确递增。
也许
ActiveSheet.GetValue
通过引用获取第一个参数并修改它。你说你试过使用临时变量但它没有用,你试过这样的东西吗?
For x = 1 to 8
tmp = x
update1 = SwfWindow("NextGen File Maintenance").SwfWindow("SIM Library Configuration").SwfObject("spreadCtl").Object.ActiveSheet.GetValue(tmp, 2)
MsgBox("x=" & x & " tmp=" & tmp)
Next
如果问题是
GetValue
确实更改了索引,您可以尝试使用按值获取索引的函数,然后在循环中使用它。
Public Function GetVal(ByVal index)
GetVal = SwfWindow("NextGen File Maintenance").SwfWindow("SIM Library Configuration").SwfObject("spreadCtl").Object.ActiveSheet.GetValue(index, 2)
End Function