ЕСЛИ, В противном случае, Конец ЕСЛИ, Существует в QTP/UFT с примером
⚡ Умное резюме
IF Else End If statements let UFT и QTP Скрипты разветвляются в зависимости от условий выполнения, а свойство Exist проверяет, появляется ли объект на экране перед выполнением ветви, охватывая также ElseIf, вложенные If и Select Case.

Что такое оператор IF-Else в... UFT/QTP?
Оператор IF Else — это наиболее распространенная структура управления условными операторами в VBScript, языке сценариев, используемом для написания скриптов. UFT/QTP Скрипты автоматизации. Это позволяет скрипту принимать решение во время выполнения: когда условие оценивается как True, выполняется один блок операторов, а когда как False — другой блок. Тестировщики постоянно используют эту конструкцию, например, для создания ветвей в скрипте в зависимости от того, успешно ли выполнен вход в систему или нет, или когда объект может появиться или не появиться на экране. Полный список условных операторов и операторов сравнения, поддерживаемых VBScript, см. в документации. Условное выражение в VBScript руководства.
Базовая форма сочетает блок If…Then с необязательным блоком Else и всегда завершается блоком End If. UFT/QTP Условие проверяется один раз. Если оно истинно, выполняются только операторы между Then и Else; если ложно, выполняются только операторы между Else и End If, и выполняется только одна ветвь. Приведенный ниже синтаксис проверяет числовое значение и отображает разные диалоговые окна для каждого результата.
Dim iValue iValue = 25 If iValue > 18 Then MsgBox "Eligible" Else MsgBox "Not Eligible" End If
In UFT/QTPВ большинстве случаев условие сравнивает свойство объекта, результат контрольной точки или возвращаемое значение свойства Exist, а не просто число, поскольку большинство скриптов проверяют тестируемое приложение, а не выполняют арифметические операции. Каждый пример ниже на этой странице основан на той же схеме «Если…Тогда…Иначе…Конец если», показанной выше; меняется только условие. Какое бы условие вы ни использовали, всегда проверяйте пути «Истина» и «Ложь» хотя бы один раз, прежде чем переносить скрипт в набор регрессионных тестов.
Если…Тогда…ИначеЕсли…Иначе в операторе UFT/QTP
Простой оператор If Else всегда выбирает только один из двух вариантов. Когда скрипту необходимо проверить три или более взаимоисключающих условий, VBScript добавляет ElseIf в тот же блок. UFT/QTP Проверяет каждое условие сверху вниз и выполняет первый блок, условие которого истинно; все остальные блоки, включая завершающий блок Else, пропускаются. Это делает скрипт гораздо более читабельным, чем вложенные друг в друга несколько несвязанных блоков If.
- Условия оцениваются сверху вниз, и оценка останавливается на первом истинном условии.
- Для каждого ключевого слова ElseIf требуется свой собственный Then и своё собственное условие.
- Параметр Else, расположенный в конце списка, является необязательным и выполняется только в том случае, если ни одно из условий, указанных выше, не выполняется.
- Только один оператор End If закрывает весь блок целиком, независимо от того, сколько ветвей ElseIf он содержит.
Dim iMarks iMarks = 75 If iMarks >= 90 Then MsgBox "Grade A" ElseIf iMarks >= 75 Then MsgBox "Grade B" ElseIf iMarks >= 50 Then MsgBox "Grade C" Else MsgBox "Fail" End If
Приведенный выше скрипт выводит разные оценки для каждого диапазона баллов и прекращает проверку дальнейших условий в тот момент, когда одна из ветвей принимает значение True, что обеспечивает эффективность больших деревьев решений даже при длительном выполнении автоматизированного процесса.
Тот же принцип напрямую применим и к проверкам пользовательского интерфейса: скрипт может считывать значение поля статуса и использовать ElseIf для обработки результатов (пройдено, предупреждено или не пройдено) в зависимости от найденного текста, вместо трех отдельных блоков If, каждый из которых независимо переоценивает поле.
Вложенный оператор if в UFT/QTP
Вложенный оператор If помещает один полный блок If…End If внутрь раздела Then или Else другого блока If. UFT/QTP Сначала выполняется внешнее условие, а внутреннее условие If проверяется только при входе во внешнюю ветвь. Этот шаблон подходит для проверок, зависящих друг от друга, например, для подтверждения возраста пользователя, позволяющего голосовать, с последующим повторным ветвлением по полу, а не для объединения всех условий в одно длинное выражение с помощью операторов And и Or. Старайтесь использовать неглубокую вложенность, как правило, не более двух-трех уровней, поскольку каждый дополнительный уровень усложняет скрипт. tracи отладка. В UFT/QTP В терминах, вложенный оператор If обычно сначала проверяет операционную систему, а затем переходит к следующему шагу в зависимости от состояния браузера или приложения, поэтому внутренний блок выполняется только после подтверждения внешнего контекста.
💡 Совет: Каждый вложенный блок должен быть отступлен на один уровень, а для каждого оператора End If должна быть отдельная строка. Последовательный отступ — это самый быстрый способ обнаружить отсутствие оператора End If до того, как скрипт завершится с ошибкой во время выполнения.
Dim iAge, sGender iAge = 20 sGender = "Male" If iAge >= 18 Then If sGender = "Male" Then MsgBox "Eligible male voter" Else MsgBox "Eligible female voter" End If Else MsgBox "Not eligible to vote" End If
Выберите описание дела в UFT/QTP
Оператор Select Case является альтернативой длинной цепочке ElseIf, в которой каждая ветвь проверяет одну и ту же переменную на соответствие различным фиксированным значениям. UFT/QTP Выражение в строке Select Case вычисляется один раз, затем сравнивается с каждым значением Case по порядку и выполняется первый совпадающий блок. Необязательный блок Case Else перехватывает любое значение, которое не охватывает ни один из перечисленных вариантов, аналогично завершающему блоку Else в блоке If. Поскольку переменная сравнения записывается только один раз, длинный блок Select Case также проще обновлять позже, чем эквивалентная цепочка операторов ElseIf, которая повторяет одно и то же имя переменной в каждой ветви.
Значения регистра сравниваются на равенство и чувствительны к регистру, поэтому «Chrome» и «chrome» считаются разными совпадениями, если значение предварительно не нормализовано, например, с помощью функции LCase. См. Объявление переменной VBScript руководство по тому, как размерность и типы данных влияют на эти сравнения.
Dim sBrowserName sBrowserName = "Chrome" Select Case sBrowserName Case "Chrome" MsgBox "Launching Chrome" Case "Firefox" MsgBox "Launching Firefox" Case "Edge" MsgBox "Launching Edge" Case Else MsgBox "Browser not supported" End Select
| ЗАЯВЛЕНИЕ | лучший ДЛЯ | КОЛИЧЕСТВО СОСТОЯНИЙ | ЧИТАЕМОСТЬ В МАСШТАБЕ |
|---|---|---|---|
| Если… Иначе | Два результата | 1 условие | Высокий |
| Если… ИначеЕсли… Иначе | Несколько несвязанных между собой состояний | 3 или более условий | Опадает по мере роста ветвей. |
| Выберите Случай | Много фиксированных значений одной переменной | Любой номер | Остается высоким |
В блоке Select Case также можно указать диапазон значений с помощью ключевого слова Is, например, Case Is > 90. Это позволяет использовать один вариант ответа для каждого значения выше порогового значения, вместо того чтобы перечислять каждое значение по отдельности.
Выбирайте опцию «Выбрать вариант» всякий раз, когда скрипт проверяет одну переменную на соответствие множеству возможных значений; оставьте опцию «Если…Или если» для условий, сравнивающих разные переменные или использующих диапазоны и логические операторы.
Как использовать оператор IF Else со свойством Exist в UFT
Нажмите здесь если видео недоступно
Свойство Exist возвращает True или False в зависимости от того, присутствует ли объект в тестируемом приложении, что делает его естественным условием для использования в сочетании с If Else. В приведенном ниже примере рассматривается классический сценарий функциональности авторизации. Бронирование авиабилетов приложение от Тестирование В этой серии сценариев необходимо, чтобы при появлении диалогового окна с ошибкой сценарий переходил в отрицательный сценарий, а при отсутствии ошибки — в положительный. Это в точности повторяет существующую схему. Сценарий тестирования Об этом рассказывается в видео выше.
- Запишите два отдельных скрипта: один для входа в систему с использованием допустимой комбинации имени агента и пароля, а другой — для входа в систему с недопустимой комбинацией.
- Вставьте шаг If Else сразу после шага входа в систему, чтобы обе записи могли выполняться в рамках одного объединенного скрипта.
- Задайте условие для проверки наличия окна «Информация об ошибке», используя... Существовать вместо шага "Клик".
- Переместите шаги, описывающие негативный сценарий, такие как закрытие окна ошибки и диалогового окна входа в систему, внутрь блока If.
- Переместите шаги, относящиеся к позитивному сценарию, например, закрытие окна бронирования рейса, внутрь блока «Иначе».
- Сохраните объединённый скрипт и запустите его с использованием как действительных, так и недействительных учётных данных, чтобы убедиться в корректном выполнении каждого пути.
Dim bLoginFailed bLoginFailed = Browser("Flight Reservation").Page("Flight Reservation").WinObject("Error").Exist(5) If bLoginFailed Then 'Negative scenario - invalid login Browser("Flight Reservation").Page("Flight Reservation").WinObject("Error").Close Dialog("Login").Close Else 'Positive scenario - valid login Window("Flight Reservation").Close End If
Помимо операторов If и Else, VBScript также поддерживает While…Wend и Для…Следующих циклов Для повторения, а также для дополнительных ветвей, описанных выше, используются операторы ElseIf и Select Case. Сочетание этих конструкций со свойством Exist позволяет создать единый алгоритм. UFT/QTP Скрипт обрабатывает как положительный, так и отрицательный сценарий тестирования без ручного вмешательства.
⚠ Примечание: Передача более длинного значения в Exist, например Exist(10), приводит к UFT Более длительное ожидание перед возвратом значения False полезно для медленно загружаемых диалогов, но может замедлить весь набор тестов, если использовать его на каждом шаге. Длительные ожидания следует использовать только для действительно медленно загружаемых объектов. Короткий, хорошо подобранный тайм-аут обеспечивает надежность и скорость выполнения объединенного сценария положительного и отрицательного событий в непрерывных тестовых запусках.
