ЕСЛИ, В противном случае, Конец ЕСЛИ, Существует в QTP/UFT с примером

⚡ Умное резюме

IF Else End If statements let UFT и QTP Скрипты разветвляются в зависимости от условий выполнения, а свойство Exist проверяет, появляется ли объект на экране перед выполнением ветви, охватывая также ElseIf, вложенные If и Select Case.

  • 🔀 Базовый синтаксис: Функция If…Then сочетается с необязательным блоком Else и завершается функцией End If, выполняя ровно одну ветвь при каждом вычислении.
  • 🧮 Множественные условия: Функция ElseIf проверяет условия сверху вниз и останавливается на первом совпадении True, заменяя длинные цепочки отдельных блоков If.
  • 🪆 Вложенная логика: Размещение оператора If внутри другого блока Then или Else позволяет обрабатывать зависимые проверки; для лучшей читаемости используйте вложенность до двух или трех уровней.
  • 🎯 Выберите случай: Эта функция сравнивает одну переменную с несколькими фиксированными значениями и читается более понятно, чем длинная цепочка операторов ElseIf.
  • 🔍 Существующее свойство: Возвращает True или False в зависимости от того, находится ли объект на экране; это стандартное условие для ветвления If Else.
  • 🧪 Пример применения: Используйте сочетание If Else и Exist для автоматического перенаправления выполнения скрипта по отрицательному или положительному пути авторизации при бронировании авиабилетов.
  • 🤖 Помощь ИИ: Инструменты искусственного интеллекта могут создавать блоки If Else и Select Case, а также отмечать отсутствующие операторы End If во время отладки.

Что такое оператор 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. В приведенном ниже примере рассматривается классический сценарий функциональности авторизации. Бронирование авиабилетов приложение от Тестирование В этой серии сценариев необходимо, чтобы при появлении диалогового окна с ошибкой сценарий переходил в отрицательный сценарий, а при отсутствии ошибки — в положительный. Это в точности повторяет существующую схему. Сценарий тестирования Об этом рассказывается в видео выше.

  1. Запишите два отдельных скрипта: один для входа в систему с использованием допустимой комбинации имени агента и пароля, а другой — для входа в систему с недопустимой комбинацией.
  2. Вставьте шаг If Else сразу после шага входа в систему, чтобы обе записи могли выполняться в рамках одного объединенного скрипта.
  3. Задайте условие для проверки наличия окна «Информация об ошибке», используя... Существовать вместо шага "Клик".
  4. Переместите шаги, описывающие негативный сценарий, такие как закрытие окна ошибки и диалогового окна входа в систему, внутрь блока If.
  5. Переместите шаги, относящиеся к позитивному сценарию, например, закрытие окна бронирования рейса, внутрь блока «Иначе».
  6. Сохраните объединённый скрипт и запустите его с использованием как действительных, так и недействительных учётных данных, чтобы убедиться в корректном выполнении каждого пути.
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 полезно для медленно загружаемых диалогов, но может замедлить весь набор тестов, если использовать его на каждом шаге. Длительные ожидания следует использовать только для действительно медленно загружаемых объектов. Короткий, хорошо подобранный тайм-аут обеспечивает надежность и скорость выполнения объединенного сценария положительного и отрицательного событий в непрерывных тестовых запусках.

Часто задаваемые вопросы (FAQ)

Оператор ElseIf последовательно оценивает условия и останавливается на первом совпадении, что делает его быстрее и понятнее, чем несколько независимых блоков If. Используйте отдельные операторы If только тогда, когда условия не связаны между собой и каждое из них должно быть проверено.

Exist использует UFT По умолчанию время ожидания синхронизации составляет несколько секунд, если только в скобках не указано пользовательское значение, например Exist(10), чтобы подождать дольше медленно загружаемый объект.

Да. Искусственный интеллект может создавать блоки If, ElseIf и Select Case на основе описания логики теста на простом языке, хотя тестировщикам все равно следует проверять имена объектов, свойства и значения тайм-аута перед запуском скрипта.

Инструменты искусственного интеллекта могут сканировать скрипт, отмечать несоответствующие операторы End If и недоступные блоки Else, а также предлагать исправления, что ускоряет отладку по сравнению с построчным просмотром длинных скриптов.

Да. Используйте ключевое слово Is внутри строки Case, например, Case Is > 90, чтобы сопоставить каждое значение, превышающее пороговое значение, вместо того, чтобы перечислять каждое из них по отдельности.

Подведем итог этой публикации следующим образом: