2016-04-21 5 views
0

Как проверить значения моих переменных во время выполнения при использовании QTP UFT? Я просто хочу создать переменную, сделать логику и заполнить ее данными, установить точку останова в строке, следующей за переменной, а затем где-то проверить или вывести ее значение.Печать переменных VBScript в QTP UFT

Я попытался:

print variableName 
WScript.Echo variableName 

Первая производит ошибка: Функция печати Несоответствие типа
Второй производит ошибку: Требуется объект: «WScript»

Я не уверен, где проблема поскольку я только начал входить в UFT и VBScript (в основном это C# и javascript, и здесь все совсем другое). Может ли кто-нибудь сказать мне правильное решение и, возможно, также объяснить эти ошибки мне?

ответ

1

Если вы хотите, чтобы все переменные использовали средство просмотра отладки в QTP.

View -> Debug просмотра

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

Примечание. Убедитесь, что у вас установлен отладчик сценариев Windows для использования средства просмотра отладки.

+0

Хм, я думаю, этого было бы достаточно в этом случае, но что, если я хочу напечатать несколько переменных? Я бы получил всплывающее окно для каждой переменной. К сожалению, этого мне не хватает. – Kai

+0

Только что отредактировал ответ. Я думал, что вам нужен эквивалент для печати, который для vbcript является msgbox. – QVSJ

+0

Хорошо спасибо, это показывает мне довольно много :) Я могу манипулировать переменными через консоль, а затем проверить, что происходит в часах, очень удобно. Тем не менее, объекты только выставляют в качестве их значения. Возможно, вы также знаете, как проверить действительные свойства/методы для объекта? :) – Kai

1

Вы также можете добавить переменную, чтобы посмотреть .. Вставьте точку останова >> запустите скрипт, затем щелкните правой кнопкой мыши на тестируемую переменную и добавьте ее для просмотра (Добавить к просмотру). После добавления вы увидите окно просмотра, и будет отображаться значение переменной.

0

Я одержим над своими переменными ... настолько, что я посыпал свой код заявлениями печати ... На самом деле, я абстрактно печатаю в свой собственный UDF (так что я могу при необходимости добавить к файлу в файл). ..

Вот моя функция: (это на самом деле к югу, потому что она ничего не возвращает)

Sub say(textToSay) 
    If talkative Then 'note that if I set global var "talkative" to false, then the whole log is disabled 
      print textToSay 
    End If 
End Sub 

Затем все мой код, как правило, выглядит следующим образом ...

say "click submit button" 
Broswer("WebSite").Page("Search").WebButton("Submit").click 

say "check for result" 
if not Browser("WebSite").Page("Results").Exist then 
    say "results page didn't appear after exist timeout" 
    failtest 
else 
    say "successfully found results page" 
end if 

Честное , Я «Я потрясен тем, что ваш оператор« print variableName »дал ошибку, печать действительно доступна в VBScript api, поэтому она должна была работать.

Весь мой вывод поступает на панель вывода в UFT. Я бы дал свою правую руку, чтобы найти способ программно очистить эту область вывода между прогонами, но никто, похоже, не знает, как это сделать.

Преимущество всего этого ведения журнала заключается в том, что я могу наблюдать за запуском моего кода и видеть КАЖДУЮ ветвь, занятую кодом, и я могу добавлять инструкции для печати моих переменных.

Вот пример, который показывает, как я хотел бы ответить на ваш вопрос:

result = browser("WebSite").Page("Results").WebElement("Result").GetROProperty("innertext") 

say "result:" & result 
if result = "Approved" then 
    Reporter.ReportEvent micPass, "Check for approved", "Approved!" 
else 
    Reporter.ReportEvent micFail, "Check for approved", "NOT Approved!" 
End If 

Обратите внимание на заявление, скажем там - я буду в состоянии видеть, что непосредственно во время выполнения кода, не дожидаясь, пока результаты не будут показаны на конец.

+0

Спасибо, это хорошая идея и хорошее решение! И причина, по которой моя печать выдала ошибку, была, вероятно, потому, что я напечатал объект вместо строки/int. – Kai