Порядковий ідентифікатор у QTP/UFTПриклад ідентифікації об'єкта
⚡ Розумний підсумок
Порядковий ідентифікатор у QTP/UFT є тай-брейком UFT застосовується, коли обов'язкові та допоміжні властивості все ще відповідають кільком об'єктам, використовуючи значення Index, Location або CreationTime для вибору одного унікального об'єкта.

Що таке порядковий ідентифікатор у QTP/UFT?
An Порядковий ідентифікатор є числовою властивістю, яка UFT (раніше QTP) додає до опису об'єкта, коли обов'язкових та допоміжних властивостей, отриманих під час сеансу запису, недостатньо для однозначної ідентифікації об'єкта. Замість невдачі інструмент повертається до лічильника, який фактично каже: «візьміть третій об'єкт цього класу».
За замовчуванням для кожного класу тестового об'єкта існує тип порядкового ідентифікатора. WebEdit нумерується інакше, ніж WinButton, а Browser також нумерується інакше. Ви можете переглянути або змінити порядковий ідентифікатор за замовчуванням для класу у вікні ідентифікації об'єкта.
Як показано на знімку екрана вище, розкривний список «Порядковий ідентифікатор» розташований внизу діалогового вікна «Ідентифікація об’єкта», під списками обов’язкових та допоміжних властивостей. Таке розташування не випадкове: воно відображає порядок, у якому UFT фактично консультується з трьома групами.
Існує три типи порядкових ідентифікаторів у UFT:
- На основі індексу
- На основі розташування
- Час створення
Чому UFT Використовує порядкові ідентифікатори лише як крайній засіб
Ідентифікація об'єкта в UFT працює каскадно. Обов'язкові властивості вивчаються спочатку. Якщо вони не дають жодного збігу, допоміжні властивості додаються одна за одною, доки опис не стане унікальним. Тільки після вичерпання обох груп UFT додайте порядковий ідентифікатор, і під час виконання звертайтеся до механізму Smart Identification, перш ніж порядкове значення буде визнано довіреним.
Причиною такого ранжування є стабільність. Обов'язкові та допоміжні властивості описують що Об'єкт – це: його ім'я, його 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 тощо.
- Якщо браузер закрито, решта браузерів зберігають свої початкові значення, а не перенумеровуються.
Індекс проти розташування проти часу створення: порівняльна таблиця
Три ідентифікатори відповідають на три різні запитання, і вибір неправильного є частою причиною періодичних збоїв.
| Аспект | індекс | Місце проведення | Час створення |
|---|---|---|---|
| Назва власності | індекс | розташування | час створення |
| Основа замовлення | Порядок у вихідному коді / ієрархії об'єктів | Положення екрана всередині вікна, рамки або діалогового вікна | Порядок відкриття екземплярів браузера |
| Правило підрахунку | Послідовний, для кожного класу тестового об'єкта | Колонки, зверху вниз, потім зліва направо | Послідовно, для кожного екземпляра браузера |
| Перше значення | 0 | 0 | 0 |
| Відноситься до | Веб та Windows класів | Переважно стандартний Windows класів | Тільки об'єкти браузера |
| Перерви, коли | Зміни порядку розмітки | Макет переміщено або змінено його розмір | Windows відкривати в іншій послідовності |
| Найкраще використовувати для | Повторювані елементи керування сіткою або таблицею | Застарілі форми для робочого столу з фіксованим макетом | Веб-процеси з кількома вікнами, такі як спливаючі вікна платежів |
Як встановити порядковий ідентифікатор у репозиторії об'єктів
Порядковий ідентифікатор налаштовується для кожного класу тестового об'єкта та автоматично застосовується до кожного об'єкта цього класу, який UFT навчається пізніше. Існуючі об'єкти, що вже знаходяться в репозиторії, не оновлюються ретроактивно.
- відкритий UFT і виберіть Інструменти > Ідентифікація об'єктів.
- Виберіть середовище, наприклад, Веб або Стандартне Windows, з розкривного списку «Середовище».
- Виберіть клас тестового об'єкта, який потрібно змінити, наприклад WebEdit або WinButton.
- Перейдіть на вкладку Порядковий ідентифікатор У розділі виберіть Індекс, Розташування, Час створення або Немає.
- Натисніть 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 для першого поля є найпоширенішою помилкою та призводить до помилки "off-by-one", яка виглядає як проблема з синхронізацією.
- Плутанина з індексом та місцем розташування. Індекс слідує за вихідним кодом; розташування слідує за екраном. На сторінці, де CSS перевпорядковує елементи, два значення відрізняються та міняються місцями.ping вони мовчки націлюються на неправильний контроль.
- Використання CreationTime поза веб-середовищем. Ця властивість існує лише для об'єктів Browser. Застосування її до об'єкта Page, Frame або Window призводить до помилки unsupported-property.
- Жорстке кодування порядкового числа у спільну функцію. Функція повторного використання, яка припускає index:=2, стає непридатною для використання в момент її виклику на іншому екрані з іншим макетом.
- Залишення порядкових чисел у репозиторії після стабілізації програми. Після того, як розробники додадуть стабільні ідентифікатори, перегляньте об'єкти та замініть порядковий номер новою властивістю.
- Спираючись на порядкові числа всередині циклів над сітками. Віддавайте перевагу
ChildObjects, яка повертає активну колекцію, тому лічильник відображає поточну сторінку, а не записану.
Ресурси
Завантажте веб-сторінки, використані у вищенаведеному посібнику, для самостійної практики
Порядкові ідентифікатори – це лише невелика частина моделі ідентифікації об'єктів. Щоб побачити, як вони вписуються в ширший робочий процес, продовжте читання повного QTP/UFT навчальна серія, перегляньте основи в тестування програмного забезпечення, дізнайтеся, як управляються результати в Підручник з HP ALM, та порівняйте стратегії локатора з Selenium підручник.
Поширені запитання
Натисніть тут якщо відео недоступне

