Как работи идентификацията на обекти в QTP/UFT?

⚡ Умно обобщение

Идентификация на обекти в QTP/UFT определя как инструментът разпознава всеки елемент от графичния потребителски интерфейс по време на тестово изпълнение, сравнявайки съхранените свойства на тестовия обект със свойствата на обекти по време на изпълнение, така че скриптовете да продължат да работят дори когато оформлението на екрана се промени.

  • 🎯 Модел на тестов обект: UFT сравнява съхранен тестов обект с активния обект по време на изпълнение на всяка стъпка, за да идентифицира контроли, независимо от позицията на екрана.
  • 🗂️ Задължителни свойства: UFT винаги записва набор от свойства по подразбиране за всеки клас обекти в хранилището на обекти.
  • 🧩 Помощни свойства: UFT добавя резервни свойства едно по едно само когато задължителният набор сам по себе си не може да изгради уникално описание.
  • Диалогов прозорец за идентификация на обекти: Инструменти > Идентификация на обекти позволява на тестерите да добавят, премахват или пренареждат свойства за всяка среда и клас обект.
  • 🕵️ Обектен шпионин: Задръжте курсора на мишката върху който и да е контрол, за да проверите свойствата му на тестовия обект и по време на изпълнение, преди да решите на кои от тях да разчитате.
  • 🔢 Порядкови идентификатори: Индексът, местоположението и времето на създаване прекъсват връзките между обекти, които остават идентични след всяка проверка на свойството.
  • 🧠 Интелигентна идентификация: Този резервен механизъм се изпълнява преди ординални идентификатори и често възстановява обект, чието научено описание е повредено.

Какво е идентификация на обекти в UFT/QTP?

Идентификацията на обектите е механизмът UFT/QTP използва за разпознаване на елемент от графичния потребителски интерфейс на екрана, така че скриптът да може да действа надеждно върху него, изпълнение след изпълнение. По време на сесия на запис, UFT изучава малък набор от свойства на обекта под показалеца на мишката и ги съхранява; по време на възпроизвеждане сравнява тези съхранени стойности със свойствата на всеки реално наличен обект и избира този, който съответства уникално, независимо къде се намира този обект на екрана сега.

Съхраненият обект, заедно със свойствата му UFT запомня се за това, се нарича Тестов обектСъответният елемент, който се показва на екрана, докато тестът се изпълнява, е Обект по време на изпълнениеСравняването на двете на всяка стъпка е основата на това, което Micro Focus нарича Модел на тестов обекти затова UFT Скриптът продължава да работи дори след като бутонът се премести с няколко пиксела или страницата бъде преоформена.

Хранилище за обекти и добавки

UFT съхранява всеки обучен тестов обект, заедно със съхранените му свойства, вътре Хранилище на обекти. Добавките казвам Бърз тест предварително към коя технология принадлежи екранът, така че инструментът вече знае кой набор от свойства се прилага и не е нужно да гадае, което намалява времето, необходимо за изучаване на обект.

Кликнете тук ако видеото не е достъпно

Всеки обект UFT Записите могат да съдържат десетки свойства. Само в уеб среда, един бутон може да покаже своето име, HTML таг, тип, клас, индекс и други. Записването на всички тях за всеки обект е технически възможно, но рядко полезно, както показва следващото изображение за типичен запис в хранилището на обекти.

Хранилище на обекти

If UFT опитал да запомни всяко налично свойство за всеки обект, хранилището за обекти щеше да се увеличи значително и изпълнението на скрипта щеше да се забави значително. За да се избегне това, QTP не запазва всяко свойство по подразбиране — запазва малък, типичен набор за всеки тип обект, като един е избран да се направи уникална идентификация възможно без допълнителните разходи. Този кратък списък със свойства, определен отделно за всяка среда и клас обекти, се конфигурира в настройките за идентификация на обекти, разгледани по-долу.

Обект Descriptйон: Задължителни и помощни свойства

Свойството на даден обект и неговата стойност заедно образуват това, което UFT призовава Обект Descriptйон — точната комбинация, която инструментът използва, за да избере един елемент от всеки друг обект на страницата. Например, за WebButton, свойството име със стойността Вход само по себе си често е достатъчно, за да формира използваем обект Descriptйон.

За да прегледате или промените това поведение, отворете Инструменти > Идентификация на обекти вътре UFTДиалоговият прозорец за идентификация на обекти изброява всички заредени в момента среди; избирането на една от тях автоматично попълва класовете обекти. UFT поддържа го, а панелът вдясно показва точно кои свойства се съхраняват за обекти от този клас. Списъкът е разделен на две групи:

  1. Задължителни свойства се съхраняват за всеки обект от този клас по подразбиране, независимо дали са действително необходими, за да го различат от съседите му.
  2. Помощни свойства се съхраняват само когато задължителните свойства сами по себе си не могат да изградят уникално описание — UFT обработва надолу по този списък едно свойство наведнъж, докато обектът стане уникален.

Уеб изображението прави правилото по-лесно за разбиране на практика.

Обект Descriptйони, задължителни и помощни свойства

  • UFT винаги съхранява алтернативния текст, HTML тага и типа на изображението за уеб изображение, дори когато самият алтернативен текст е уникален.
  • Ако задължителните свойства не могат да създадат уникално описание, 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 работи чрез визуални идентификатори на релации, интелигентна идентификация и накрая ординален идентификатор. Ако никой от тях не генерира нито едно съвпадение, стъпката води до грешка по време на изпълнение, защото никой обект не удовлетворява всяко съхранено свойство.

Записването на всяко налично свойство би раздуло хранилището на обекти и би забавило изпълнението на скриптовете. UFT вместо това запазва малък, типичен набор за всеки клас обекти, добавяйки помощни свойства само когато задължителните не могат да формират уникално описание.

Да. Инструментите, подпомагани от изкуствен интелект, могат да преглеждат производствения трафик или DOM структурата, за да предложат по-стабилни и по-малко крехки свойства преди запис, и могат да маркират обекти, чиито задължителни свойства се променят често между компилациите — тестерите все пак проверяват предложенията.

Не съвсем. Самовъзстановяващите се локатори намаляват грешките от преименувани или преместени елементи, но ординалните идентификатори все още разрешават обекти, които са наистина идентични във всяко свойство, като например няколко немаркирани квадратчета за отметка подред.

Обобщете тази публикация с: