2016-11-21 2 views
0

Я сравнительно новичок в QTP/UFT. Я пишу тест и должен использовать данные из Global, а также Local Data Sheet в том же тесте.QTP/UFT - Доступ к нескольким спецификациям в цикле

Мой for цикл что-то вроде:

Datatable.GetSheet("Global") 
RowCount = Datatable.GetRowCount 
For Cntr = 1 to RowCount 
    Datatable.SetCurrentRow(Cntr) 
    msgbox Datatable("Form", dtGlobalSheet) 'Form is my column Name from Global Data Sheet' 

    Datatable.GetSheet("Action1") 
    RowCount2 = Datatable.GetRowCount 
    For Cntr2 = 1 to RowCount2 
     Datatable.SetCurrentRow(Cntr2) 
     msgbox Datatable("Number", dtGlobalSheet) 'Number is my column Name from Action1 Data Sheet' 
    Next 
Next 

Мои значения столбцов становятся перепутались с обеих листов.

ответ

1

Вам необходимо присвоить свои данные переменным, чтобы лучше работать с ним.

  • Вы звоните Datatable.GetSheet("Global"), но не назначаете его нигде.
  • Когда вы используете Datatable.GetRowCount, вы на самом деле не говорите UFT, из которого datatable, чтобы получить номер строки, и это, вероятно, одна из ваших проблем.
  • В конце кода вы используете msgbox Datatable("Number", dtGlobalSheet), но вы, вероятно, должны использовать msgbox Datatable("Number", dtLocalSheet) (предполагая, что вы указали эти переменные где-то в своем коде).

Проверить это возможное решение (не проверено):

Dim dtGlobal : Set dtGlobal = Datatable.GetSheet("Global") 
Dim dtLocal : Set dtLocal = Datatable.GetSheet("Action1") 
RowCount = dtGlobal.GetRowCount 
For Cntr = 1 to RowCount 
    'Working with global datatable 
    dtGlobal.SetCurrentRow(Cntr) 
    msgbox dtGlobal.GetParameter("Form") 'Form is my column Name from Global Data Sheet' 

    'Working with local datatable 
    RowCount2 = dtLocal.GetRowCount 
    For Cntr2 = 1 to RowCount2 
     dtLocal.SetCurrentRow(Cntr2) 
     msgbox dtLocal.GetParameter("Number") 'Number is my column Name from Action1 Data Sheet' 
    Next 
Next 

PS .: После точного определения того, что данные поступают из которых DataTable, вы можете проверить свой цикл, чтобы убедиться, что ваша логика верна , поскольку я не проверял эту часть. Дайте мне знать, если это сработает для вас.

Счастливое кодирование.

+1

Спасибо Victor за быстрый ответ. Это работает только с одним изменением. Я использую UFT 12.54 и не поддерживает dtGlobal.Value («Форма»). Поэтому я просто заменил его на dtGlobal.GetParameter («Форма») – phpfreak

+0

Я рад, что это сработало. К сожалению, у меня больше нет UFT, поэтому я проверил метод с [tutorialspoint] (https://www.tutorialspoint.com/qtp/qtp_data_table_methods.htm), так как я не помню его и не смог проверить его заранее. Я бы посоветовал вам пометить этот сайт для будущих ссылок;) –

+0

Конечно, я сделал. Благодаря! – phpfreak

Смежные вопросы