UFT-скрипт, использующий таблицу данных, многократно запускает только первую строку; не учитывает остальные строки - PullRequest
0 голосов
/ 14 марта 2019

Я работаю над сценарием UFT, который считывает значения из глобальной таблицы данных и вводит значение в текстовое поле, а затем выполняет проверку.Но скрипт читает только первое значение, а не остальные значения в столбце (и запускает одно и то же значение 6 раз).Я знаю, что упускаю что-то простое, но не могу понять это;Можете ли вы помочь?

length (data table)
-100
200
100.01
0
100
25

Вот код:

<opens the number dialog>

data_length = DataTable.GetRowCount 'returns 6 

for i=1 To data_length

swfWindow("main_client").SwfWindow("tallyDialog").WinEdit("Current Value: -000.00).Set DataTable.Value("length") 'expecting it to read and input first value.

swfWindow("main_client").SwfWindow("tallyDialog").ActiveX("Enter") 'click enter

avg_length = swfWindow("main_client").SwfWindow("tallyDialog").Check (Checkpoint("Value must be from 0 to 100))

If avg_length then

reporter.reportEvent micPass, "test passed"

Else

reporter.reportEvent micFail, "test failed"

End if

Next

Я ожидал, что он сделает эту итерацию для всех 6 значений в таблице длины, но он делает эту итерацию6 раз для первого значения (-100) Чего мне не хватает?

Изменение «запускать по всем строкам» на «запускать только одну итерацию» в настройках UFT также не сработало.

1 Ответ

0 голосов
/ 16 марта 2019

Здесь есть пара вопросов, на которые стоит обратить внимание. Вот код, который будет делать то, что вам нужно, а затем объяснение.

Во-первых, настройте свой тест на выполнение только одной итерации, поскольку в этой одной итерации вы просматриваете таблицу данных. Если бы вы избегали цикла в коде, вы могли бы установить для него значение «Выполнить все строки», и он будет перебирать таблицу данных.

<opens the number dialog>

data_length = DataTable.GetRowCount 'returns 6 

for i=1 To data_length
    DataTable.SetCurrentRow(i)
    swfWindow("main_client").SwfWindow("tallyDialog").WinEdit("Current Value: -000.00).Set DataTable.Value("length") 'expecting it to read and input first value.
    swfWindow("main_client").SwfWindow("tallyDialog").ActiveX("Enter") 'click enter
    avg_length = swfWindow("main_client").SwfWindow("tallyDialog").Check (Checkpoint("Value must be from 0 to 100))
    If avg_length then
        reporter.reportEvent micPass, "test passed"
    Else
        reporter.reportEvent micFail, "test failed"
    End if
Next

Обратите внимание на команду DataTable.SetCurrentRow в начале цикла, которая устанавливает строку данных с индексом цикла i. Это гарантирует, что каждый раз в цикле таблица данных выбирает правильный элемент данных для итерации цикла.

Дайте эту попытку, и если у вас все еще есть проблемы, опубликуйте комментарий с вашей проблемой, и я постараюсь помочь вам в дальнейшем.

...