Порядковый идентификатор в QTP/UFTПример идентификации объекта
⚡ Умное резюме
Порядковый идентификатор в QTP/UFT является решающим фактором в случае ничьей UFT Применяется в случаях, когда обязательные и вспомогательные свойства соответствуют более чем одному объекту, используя значения Index, Location или CreationTime для выбора единственного уникального объекта.

Что такое порядковый идентификатор в QTP/UFT?
An Порядковый идентификатор является числовым свойством, которое UFT (ранее QTPДополняет описание объекта, когда обязательных и вспомогательных свойств, зафиксированных во время сеанса записи, недостаточно для однозначной идентификации объекта. Вместо ошибки инструмент использует счетчик, который, по сути, говорит: «возьмите третий объект этого класса».
По умолчанию для каждого класса тестовых объектов существует порядковый идентификатор. Объект WebEdit имеет другой номер, чем WinButton, а объект Browser — ещё другой. Вы можете просмотреть или изменить порядковый идентификатор класса по умолчанию в окне «Идентификация объекта».
Как показано на скриншоте выше, раскрывающийся список «Порядковый идентификатор» расположен внизу диалогового окна «Идентификация объекта», под списками обязательных и вспомогательных свойств. Такое расположение не случайно: оно отражает порядок, в котором... UFT фактически консультируется со всеми тремя группами.
Существует три типа порядковых идентификаторов. UFT:
- На основе индекса
- На основе расположения
- Время создания
Почему UFT Использует порядковые идентификаторы только в крайнем случае.
Идентификация объектов в UFT Процесс работает каскадно. Сначала изучаются обязательные свойства. Если они не дают ни одного совпадения, вспомогательные свойства добавляются по одному, пока описание не станет уникальным. Только когда обе группы исчерпаны, UFT Присвойте порядковый идентификатор, и во время выполнения перед тем, как доверить порядковое значение, будет запрошен механизм интеллектуальной идентификации.
Причина такого ранжирования — стабильность. Обязательные и вспомогательные свойства описывают почему Объект — это: его имя, его HTML-тег, его тип, его метка. Порядковый идентификатор описывает только в котором Объект случайно оказался на месте в момент записи. Любое изменение страницы меняет номер:
- Разработчик вставляет скрытое поле поверх того, которое вы автоматизируете.
- Рекламный баннер добавляет в заголовок две дополнительные ссылки.
- Адаптивная верстка преобразует форму из двух колонок в одну.
- Всплывающее окно браузера открывается раньше, чем это происходило во время записи.
Ни одно из этих изменений не нарушает описание, построенное на основе имени или идентификатора, но каждое из них незаметно сдвигает каждое значение индекса и местоположения на странице. Именно поэтому опытные инженеры рассматривают порядковый идентификатор как сигнал о необходимости доработки описания объекта, а не как готовое решение. Тот же принцип применим ко всему. автоматизация тестирования фреймворки в целом, включая стратегию локатора в Selenium.
💡 Совет: Прежде чем принять порядковый идентификатор, откройте объект в Object Spy и найдите стабильный пользовательский атрибут. Добавление этого атрибута в список вспомогательных свойств для класса часто устраняет необходимость в порядковом идентификаторе для каждого будущего объекта этого типа.
Типы порядковых идентификаторов в UFT/QTP
На основе индекса
- При использовании порядкового идентификатора на основе индекса, UFT присваивает значение индекс свойство объекта во время записи.
- Значение определяется порядком появления объекта в исходном коде, а не на экране.
- Первое вхождение имеет значение 0.
- Значения свойств индекса зависят от конкретного объекта, поэтому каждый тестовый класс объекта учитывается отдельно.
- Следовательно, если вы используете index:=3 для описания тестового объекта WebEdit, UFT выполняет поиск четвертого объекта WebEdit на странице.
- Аналогично, если вы используете index:=1 для описания тестового объекта WebButton, UFT выполняет поиск второго объекта WebButton на странице.
На основе расположения
- При использовании порядкового идентификатора, основанного на местоположении, UFT присваивает значение Локация свойство объекта, позволяющее однозначно его идентифицировать.
- Значение зависит от порядка, в котором объект появляется в окне, фрейме или диалоговом окне по отношению к другим объектам с идентичными свойствами.
- Первое появление объекта равно 0.
- Значения присваиваются в столбцах, сверху вниз, а затем слева направо.
- Местоположение — это порядковый идентификатор по умолчанию для большинства стандартных адресов. Windows тестовые классы объектов, где визуальное расположение более стабильно, чем порядок разметки.
Время создания
- При использовании порядкового идентификатора времени создания, UFT присваивает значение время создания свойство объекта браузера.
- Этот идентификатор доступен только для веб-среды и только для тестовых объектов браузера.
- Это значение указывает на порядок открытия браузера относительно других открытых браузеров.
- Первый браузер, открытый во время выполнения программы, получает значение creationtime:=0, а последующие браузеры получают 1, 2, 3 и так далее.
- Если один браузер закрыт, остальные браузеры сохраняют свои исходные значения, а не перенумеруются.
Таблица сравнения: Индекс, Местоположение и Время создания.
Эти три идентификатора отвечают на три разных вопроса, и выбор неправильного из них часто является причиной периодических сбоев.
| Аспект | Индекс | Локация | CreationTime |
|---|---|---|---|
| Имя свойства | индекс | Локация | время создания |
| Основа заказа | Порядок в исходном коде / иерархии объектов | Положение на экране внутри окна, рамки или диалогового окна | Порядок открытия экземпляров браузера |
| Правило подсчета | Последовательно, для каждого класса тестовых объектов | Столбцы, сверху вниз, затем слева направо. | Последовательно, для каждого экземпляра браузера |
| Первое значение | 0 | 0 | 0 |
| Относится к | Интернет и Windows классов | В основном стандартный Windows классов | Только объекты браузера |
| Перерывы при | изменения порядка наценки | Макет изменен или изменен размер. | Windows открыть в другой последовательности |
| Лучше всего подходит для | Повторяющиеся элементы управления сеткой или таблицей | Устаревшие настольные формы с фиксированной компоновкой | Многооконные веб-интерфейсы, такие как всплывающие окна для оплаты. |
Как задать порядковый идентификатор в репозитории объектов
Порядковый идентификатор настраивается для каждого класса тестовых объектов и автоматически применяется ко всем объектам этого класса. UFT Обучение происходит впоследствии. Существующие объекты, уже находящиеся в репозитории, не обновляются задним числом.
- Открыто UFT и Инструменты > Идентификация объектов.
- Выберите среду, например, Web или Standard. Windowsиз выпадающего списка «Окружающая среда».
- Выберите класс тестового объекта, который вы хотите изменить, например WebEdit или WinButton.
- В Порядковый идентификатор В разделе выберите Index, Location, CreationTime или None.
- Нажмите OK и заново обучить объект, чтобы было зафиксировано новое порядковое значение.
- Откройте репозиторий объектов, выберите объект и убедитесь, что порядковое свойство теперь отображается в списке описаний.
Выбор Ничто полностью отключает резервный вариант для этого класса. UFT В этом случае система выдаст ошибку идентификации, а не предложит угадать, что часто является желаемым поведением в наборе тестов, где скрытая ошибка идентификации наносит больший ущерб, чем явный сбой. Зафиксируйте свои ожидания в хорошо составленном документе. прецедент Это делает данный компромисс очевидным для всей команды.
⚠️ Предупреждение: Изменение порядкового идентификатора класса — это настройка на уровне машины, а не на уровне теста. Если она не экспортирована и не предоставлена в общий доступ, скрипты, которые проходят проверку на вашей машине, могут завершиться ошибкой на машине коллеги или на агенте сборки.
Как использовать порядковые идентификаторы в Descriptинтерактивное программирование
В описательном программировании диалоговое окно идентификации объекта отсутствует. Порядковый номер записывается непосредственно в строку описания, точно так же, как и любое другое имя свойства, и всегда начинается с нуля.
' Ordinals are zero based: index:=3 is the FOURTH WebEdit on the page Set objPage = Browser("Guru99 Bank").Page("Guru99 Bank") objPage.WebEdit("index:=3").Set "9999999999" Print "Filled WebEdit occurrence #" & (3 + 1) ' Location is counted top to bottom, then left to right objPage.WebButton("location:=1").Click Print "Clicked WebButton occurrence #" & (1 + 1) ' CreationTime works only on Browser objects Print "Switching to browser opened at position #" & (1 + 1) Browser("creationtime:=1").Sync
Выход:
Filled WebEdit occurrence #4 Clicked WebButton occurrence #2 Switching to browser opened at position #2
Более безопасный подход заключается в сочетании реальных свойств с ChildObjects Таким образом, порядковый номер проверяется перед использованием. В приведенном ниже примере предполагается страница, содержащая пять совпадающих объектов WebEdit и индекс 9.
Dim oDesc, oChildren, intIndex Set oDesc = Description.Create() oDesc("micclass").Value = "WebEdit" oDesc("html tag").Value = "INPUT" Set oChildren = objPage.ChildObjects(oDesc) intIndex = 9 If intIndex < oChildren.Count Then oChildren(intIndex).Set "Guru99" Else Print "Index " & intIndex & " is out of range; only " & oChildren.Count & " objects match" End If
Выход:
Index 9 is out of range; only 5 objects match
Этот механизм преобразует бесполезную ошибку выполнения «Невозможно идентифицировать объект» в читаемое сообщение, что важно при публикации результатов в отчет о дефекте. tracкер или к HP ALM интегрирован с UFT.
Распространенные ошибки при использовании порядковых идентификаторов
Большинство дефектов, связанных с порядком чисел tracВернемся к небольшому набору повторяющихся ошибок.
- Считаем с 1. Каждый порядковый идентификатор начинается с 0. Наиболее распространенная ошибка — написание index:=1 для первого поля, что приводит к ошибке с погрешностью в одну единицу, которая выглядит как проблема синхронизации.
- Путаница между индексом и местоположением. Индекс соответствует исходному коду; местоположение соответствует экрану. На странице, где CSS изменяет порядок элементов, эти два значения различаются и меняются местами.ping Они незаметно воздействуют не на тот контрольный объект.
- Использование CreationTime вне веб-среды. Это свойство существует только у объектов типа Browser. Применение его к объектам Page, Frame или Window приводит к ошибке "неподдерживаемое свойство".
- Встраивание порядкового номера непосредственно в общую функцию. Функция, допускающая многократное использование и предполагающая index:=2, становится непригодной для использования в тот момент, когда её вызывает второй экран с другой компоновкой.
- Сохранение порядковых номеров в репозитории после стабилизации работы приложения. После того как разработчики добавят стабильные идентификаторы, следует вернуться к объектам и заменить порядковый номер новым свойством.
- Использование порядковых номеров внутри циклов над сетками. предпочитать
ChildObjects, которая возвращает данные в реальном времени, поэтому счетчик отражает текущую страницу, а не записанную.
Ресурсы
Загрузите веб-страницы, использованные в приведенном выше руководстве, для самостоятельной практики.
Порядковые идентификаторы — это лишь небольшая часть модели идентификации объектов. Чтобы понять, как они вписываются в более широкий рабочий процесс, перейдите к полному описанию. QTP/UFT серия тренировокповторите основные положения в тестирование программного обеспеченияУзнайте, как осуществляется управление результатами в Учебное пособие HP ALMи сравнить стратегии определения местоположения с Selenium учебник.
Часто задаваемые вопросы (FAQ)
Нажмите здесь если видео недоступно

