2015-03-12 1 views
0

Я пытаюсь параметризировать действия и ниже код, который я разработалUFT Действия Issue

Datatable.ImportSheet "Q:\Excel.xls","Sheet1","Action1" 
a=datatable.GetSheet("Action1").GetRowCount 
For i= 1 to a 
Datatable.GetShee("Action1").SetCurrentRow(i) 
If datatable.Value("OracleDatabase","Action1")<>"" Then 
    RunAction Datatable.Value("Scriptname","Action1"), oneIteration,"Oracle" 
    msgbox Datatable.Value("Scriptname","Action1") 
End If 
If datatable.Value("SQLdatabase","Action1")<>"" Then 
    RunAction Datatable.Value("Scriptname","Action1"), oneIteration 
    msgbox Datatable.Value("Scriptname","Action1") 
End If 
RunAction "Action1 [MediumSanityWF12]", oneIteration 
Next 

Проблема здесь в том, когда я бегала код выше, для первой итерации «действий1 [GUITest1 ] «выполняется, и это правильно. На второй итерации, для базы данных оракула, сценарий «Action1 [GUITest2]» и для базы данных SQL снова «Action1 [GUITest1]» выполнено. По моему пониманию, он должен выполнить действие Action1 [GUITest2] только, поскольку я использовал метод setcurrentrow для datatable. Я немного запутался здесь, почему он выполняет «Action1» для базы данных SQL вместо «Action2» во второй итерации?

Пожалуйста, дайте мне понять это.

+0

Доля таблице данных – Saikrishna

+0

@Saikrishna: Я пытаюсь вставить весь DataTable, но это только показывает, как показано ниже SCRIPTNAME \t \t OracleDatabase SQLdatabase \t Доступ Action1 [GUITest1] \t Да \t Да \t Action1 [GUITest2] \t YEs \t Да –

ответ

0

Я надеюсь, что это должно работать

Datatable.ImportSheet "Q:\Excel.xls","Sheet1","Action1" 
a=datatable.GetSheet("Action1").GetRowCount 
For i= 1 to a 
Datatable.GetSheet("Action1").SetCurrentRow(i) 
If datatable.Value("OracleDatabase","Action1")<>"" Then 
    RunAction Datatable.Value("Scriptname","Action1"), oneIteration,"Oracle" 

End If 
Datatable.GetSheet("Action1").SetCurrentRow(i) 
If datatable.Value("SQLdatabase","Action1")<>"" Then 
    RunAction Datatable.Value("Scriptname","Action1"), oneIteration 

End If 
RunAction "Action1 [MediumSanityWF12]", oneIteration 
Next 
+0

Да, это здорово. Но мой вопрос здесь в том, почему он не работает, когда я упоминаю метод Setcurrentrow только один раз? . Фактически он должен установить эту конкретную строку, когда я использую метод setcurrentrow, и он должен принимать только значения только в этой строке. Но здесь происходит то, что происходит для первой итерации, она выполняет «Action1» для Oracle и SQL и для вторая итерация, для базы данных Oracle она выполняет «Action2», а для базы данных SQL она возвращается и выполняет «Action1». Это не оригинальное поведение метода setcurrentrow. Мне нужна причина, по которой он ведет себя так. –

+0

Datatable - ссылка на один объект для всего теста. Если вы перейдете к следующему тестовому действию, строка getcurrent будет извлекать значение для этого теста. Так что вам нужно получить текущий лист действий и установить текущее значение строки – Saikrishna

+0

Хорошо, но если мы поместите некоторый код, связанный с текстовым полем, вместо действий в приведенном выше коде setcurrentrow, работающий нормально, и для каждого оператора нет необходимости ставить оператор setcurrentrow перед исполняемым кодом. Это происходит только при параметризации действий. –