Як працює ідентифікація об'єктів у QTP/UFT?

⚡ Розумний підсумок

Ідентифікація об'єкта в QTP/UFT визначає, як інструмент розпізнає кожен елемент графічного інтерфейсу під час тестового запуску, порівнюючи збережені властивості тестового об'єкта з властивостями активного об'єкта часу виконання, щоб скрипти продовжували працювати навіть за зміни макета екрана.

  • 🎯 Модель тестового об'єкта: UFT порівнює збережений тестовий об'єкт з активним об'єктом часу виконання на кожному кроці, щоб ідентифікувати елементи керування незалежно від положення на екрані.
  • 🗂️ Обов'язкові властивості: UFT завжди записує набір властивостей за замовчуванням для кожного класу об'єктів у сховищі об'єктів.
  • 🧩 Допоміжні властивості: UFT додає резервні властивості по одній, лише коли обов'язковий набір сам по собі не може створити унікальний опис.
  • Діалогове вікно ідентифікації об'єкта: Інструменти > Ідентифікація об'єктів дозволяють тестувальникам додавати, видаляти або змінювати порядок властивостей для кожного середовища та класу об'єктів.
  • 🕵️ Object Spy: Наведіть курсор на будь-який елемент керування, щоб перевірити його властивості тестового об'єкта та часу виконання, перш ніж вирішити, на які з них покладатися.
  • 🔢 Порядкові ідентифікатори: Індекс, Розташування та Час створення розривають зв'язки між об'єктами, які залишаються ідентичними після кожної перевірки властивості.
  • 🧠 Розумна ідентифікація: Цей резервний механізм виконується перед порядковими ідентифікаторами та часто відновлює об'єкт, вивчений опис якого був пошкоджений.

Що таке ідентифікація об'єктів у UFT/QTP?

Ідентифікація об'єктів – це механізм UFT/QTP використовується для розпізнавання елемента графічного інтерфейсу на екрані, щоб скрипт міг надійно реагувати на нього, виконання запуску за виконанням. Під час сеансу запису, UFT вивчає невеликий набір властивостей об'єкта під вказівником миші та зберігає їх; під час відтворення він порівнює ці збережені значення з властивостями кожного фактично присутнього об'єкта та вибирає той, який унікально відповідає, незалежно від того, де цей об'єкт зараз знаходиться на екрані.

Збережений об'єкт разом із властивостями UFT пам'ятає за це, називається Тестовий об'єктВідповідний елемент, який відображається на екрані під час виконання тесту, це Об’єкт часу виконанняПорівняння цих двох на кожному кроці є основою того, що Micro Focus називає Модель тестового об'єкта, і саме тому UFT Скрипт продовжує працювати навіть після того, як кнопка переміститься на кілька пікселів або сторінка буде перероблена.

Репозиторій об'єктів та надбудови

UFT зберігає кожен вивчений тестовий об'єкт разом із його збереженими властивостями всередині Репозиторій об'єктів. Add-ins сказати Швидкий тест заздалегідь, до якої технології належить екран, тому інструмент вже знає, який набір властивостей застосовується, і не повинен здогадуватися, що скорочує час, необхідний для вивчення об'єкта.

Натисніть тут якщо відео недоступне

Кожен об'єкт UFT Записи можуть містити десятки властивостей. Тільки у веб-середовищі одна кнопка може відображати його назву, тег HTML, тип, клас, індекс тощо. Запис усіх цих властивостей для кожного об'єкта технічно можливий, але рідко корисний, як показано на наступному зображенні для типового запису в репозиторії об'єктів.

Репозиторій об'єктів

If UFT намагався запам'ятати кожну доступну властивість для кожного об'єкта, сховище об'єктів збільшувалося б у розмірі, а виконання скриптів помітно сповільнювалося. Щоб уникнути цього, QTP не зберігає кожну властивість за замовчуванням — він зберігає невеликий типовий набір для кожного типу об'єкта, один обраний для створення унікальна ідентифікація можливо без накладних витрат. Цей короткий список властивостей, визначених окремо для кожного середовища та класу об'єктів, налаштовується в налаштуваннях ідентифікації об'єктів, які розглядаються далі.

Об'єкт Descriptіон: Обов'язкові та допоміжні властивості

Властивість об'єкта та його значення разом утворюють те, що UFT телефонує Об'єкт Descriptіон — точна комбінація, яку інструмент використовує для вибору одного елемента з кожного іншого об'єкта на сторінці. Наприклад, для WebButton властивість ім'я зі значенням Увійти сам по собі часто достатньо, щоб утворити придатний для використання об'єкт Descriptіона.

Щоб переглянути або змінити цю поведінку, відкрийте Інструменти > Ідентифікація об'єктів всередині UFTУ діалоговому вікні ідентифікації об'єктів перелічено всі завантажені середовища; вибір одного з них автоматично заповнює класи об'єктів. UFT підтримує його, а панель праворуч показує, які саме властивості зберігаються для об'єктів цього класу. Список поділено на дві групи:

  1. Обов'язкові властивості зберігаються для кожного об'єкта цього класу за замовчуванням, незалежно від того, чи потрібні вони для його відмінності від сусідніх.
  2. Допоміжні властивості зберігаються лише тоді, коли обов'язкові властивості самі по собі не можуть створити унікальний опис — UFT обробляє цей список по одній властивості за раз, доки об'єкт не стане унікальним.

Веб-зображення полегшує практичне використання правила.

Об'єкт Descriptіон, обов'язкові та допоміжні властивості

  • UFT завжди зберігає текст alt, тег HTML та тип зображення для веб-зображення, навіть якщо сам текст alt вже унікальний.
  • Якщо обов'язкові властивості не можуть створити унікальний опис, UFT додає властивість класу зі списку допоміжних елементів.
  • Як тільки властивість зробить опис унікальним, UFT зупиняє додавання подальших значень — пропускає назву файлу та висоту, якщо класу вже було достатньо, пропускає висоту, якщо потрібна була назва файлу тощо.
  • Припустимо, що під час запису записується лише властивість класу. Під час виконання, UFT більше не розрізняє, які властивості були обов'язковими, а які допоміжними — він просто порівнює кожну властивість у збереженому описі з об'єктом часу виконання.
  • Якщо навіть одна збережена властивість не збігається, крок не виконується — унікальний опис є двійковим, а не найкращим збігом.
Аспект Обов'язкові властивості Допоміжні властивості
При зберіганні Завжди, для кожного об'єкта цього класу Тільки коли обов'язкові властивості не можуть утворити унікальний опис
Налаштовано в Діалогове вікно ідентифікації об'єкта, обов'язковий список Діалогове вікно ідентифікації об'єкта, допоміжний список
Порядок використання Навчився першим, беззастережно Додаються по одному, доки об'єкт не стане унікальним
Лікування під час виконання Порівняно з допоміжними властивостями Порівнюється з обов'язковими властивостями

У відео нижче детально описано цей робочий процес, що порівнює обов’язкові та допоміжні дії.

Діалогове вікно ідентифікації об'єкта Box та Об'єктний шпигун

Діалогове вікно ідентифікації об'єкта — це не просто засіб перегляду, це місце, де тестувальник налаштовує агресивність UFT ідентифікує об'єкти для всього середовища. Зміна порядку, додавання або видалення властивості тут змінює те, що вивчається для кожного об'єкта цього класу з цього моменту, а не лише для того, що записується на даний момент. Типовий робочий процес виглядає так:

  1. відкритий UFT і йди до Інструменти > Ідентифікація об'єктів.
  2. Виберіть середовище (веб, Windows, Javaтощо) з випадаючого списку.
  3. Виберіть клас об'єктів, наприклад WebButton або WinEdit, зі списку ліворуч.
  4. Переміщуйте властивості між обов’язковими та допоміжними списками або змінюйте порядок у допоміжному списку, щоб контролювати, яку властивість UFT намагається першим.
  5. Увімкніть або вимкніть інтелектуальну ідентифікацію для цього класу за допомогою прапорця у верхній частині панелі.

Зміни, внесені тут, будуть застосовані наступного разу UFT вивчає об'єкт цього класу — записи, вже збережені в репозиторії об'єктів, зберігають свій початковий опис, доки об'єкт не буде перезаписано або оновлено вручну.

Використання Object Spy для перевірки властивостей

Перш ніж редагувати обов'язковий або допоміжний список, більшість тестувальників перевіряють, як насправді виглядають властивості об'єкта за допомогою Об'єктний шпигунНаведення шпигунського курсора на будь-який елемент керування в тестованій програмі відображає як його тестовий об'єкт, так і властивості середовища виконання поруч, разом з методами. UFT можна викликати його — корисно, коли обов'язкова властивість постійно змінюється між збірками і її потрібно замінити на стабільнішу.

Порядкові ідентифікатори: індекс, розташування та час створення

Іноді навіть кожна обов'язкова та допоміжна властивість все одно призводить до того, що два або більше об'єктів виглядають ідентично — наприклад, три прапорці з однаковою назвою, класом та міткою. Саме для такої ситуації UFT повертається на порядковий ідентифікатор, резервне значення, яке ранжує об'єкти, ідентичні іншим чином, за їхньою позицією, а не за їхніми властивостями.

Порядковий ідентифікатор властивість Замовлення призначено Стосується
індекс індекс Порядок появи об'єкта в базовому вихідному коді, починаючи з 0 Будь-який клас об'єктів
Місце проведення Місце проведення Зверху вниз, потім зліва направо на екрані, починаючи з 0 Будь-який клас об'єктів
Час створення Час створення Порядок відкриття вікна браузера, починаючи з 0 Тільки об'єкти браузера

UFT вивчає порядковий ідентифікатор лише тоді, коли обов'язкові та допоміжні властивості дійсно не можуть розділити два об'єкти, оскільки значення є відносним і може зміщуватися, якщо змінюється макет сторінки, навіть якщо сам об'єкт не змінився. Фрагмент VBScript нижче використовує Index для натискання другого з двох однаково названих посилань.

Dim objBrowser, objPage
Set objBrowser = Browser("title:=Guru99 Bank")
Set objPage = objBrowser.Page("title:=Guru99 Bank")
' Index:=1 clicks the second Link named "Manage Order" (index starts at 0)
objPage.Link("name:=Manage Order", "index:=1").Click

Значення індексу та розташування є специфічними для класу об'єктів, названого в операторі, тому Індекс:=3 у WebEdit шукає лише серед об'єктів WebEdit, тоді як те саме значення у загальному WebElement враховується для кожного веб-об'єкта на сторінці незалежно від типу.

Де підходить розумна ідентифікація

Ідентифікація об'єкта в UFT не зупиняється на вивченому описі. Коли унікальний збіг не може бути знайдений, UFT виконує процес у фіксованому порядку: спочатку перевіряє вивчені обов'язкові та допоміжні властивості, потім будь-який візуальний ідентифікатор відношення, а потім Розумна ідентифікація якщо цей механізм увімкнено для класу, і лише в крайньому випадку порядковий ідентифікатор.

Розумна ідентифікація навмисно розміщується між вивченим описом та порядковим ідентифікатором. Вона перебудовує список кандидатів, використовуючи основні властивості класу, та звужує його необов'язковими властивостями, тому часто може відновити об'єкт, вивчений опис якого не працює, наприклад, перейменовану кнопку, без жодного контакту з репозиторієм об'єктів. Оскільки цей додатковий крок пошуку вимагає часу, більшість команд вмикають її для класів, де важлива ідентифікація, та спираються на порядкові ідентифікатори лише там, де позиція дійсно є єдиною відмінною рисою, що залишилася, наприклад, у банку немаркованих радіокнопок.

Поширені запитання

Репозиторій об’єктів зберігає кожен вивчений тестовий об’єкт та його збережені властивості. Налаштування ідентифікації об’єктів, які відкриваються з розділу «Інструменти» > «Ідентифікація об’єктів», контролюють, які властивості UFT записи в це сховище для кожного класу об'єктів спочатку.

UFT працює через візуальні ідентифікатори зв'язків, Smart Identification та, нарешті, порядковий ідентифікатор. Якщо жоден з них не видає жодного збігу, крок завершується помилкою під час виконання, оскільки жоден об'єкт не задовольняє всі збережені властивості.

Запис кожної доступної властивості роздуватиме сховище об'єктів та уповільнюватиме виконання скриптів. UFT зберігає невеликий типовий набір для кожного класу об'єктів, додаючи допоміжні властивості лише тоді, коли обов'язкові не можуть сформувати унікальний опис.

Так. Інструменти на основі штучного інтелекту можуть переглядати виробничий трафік або структуру DOM, щоб запропонувати стабільніші, менш крихкі властивості перед записом, а також можуть позначати об'єкти, обов'язкові властивості яких часто змінюються між збірками — тестувальники все одно перевіряють ці пропозиції.

Не зовсім. Самовідновлювальні локатори зменшують кількість збоїв, спричинених перейменованими або переміщеними елементами, але порядкові ідентифікатори все ще розпізнають об'єкти, які дійсно ідентичні за кожною властивістю, наприклад, кілька непідписаних прапорців поспіль.

Підсумуйте цей пост за допомогою: