Для цикла в VBScript (QTP) не работает - PullRequest
1 голос
/ 05 марта 2012

Я использую 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 ... навсегда

Кажется, я не могу использовать переменную counter в цикле vbscript for, не повредив ее каким-либо образом - независимо от того, как называется переменная. Я даже пытался присвоить X другой переменной и использовать ее в своем выражении GetValue безуспешно.

Я что-то упускаю здесь очень просто? В Google нет документации по циклу vbscript For, подразумевающего какое-либо иное использование. Я тоже ничего не нашел в ссылке на QTP.

Спасибо

Jason

1 Ответ

2 голосов
/ 06 марта 2012

Это очень странно, я предполагаю, что если вы удалите вторую строку в цикле и просто оставите 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
...