Пореден идентификатор в 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 и т.н.
- Ако даден браузър бъде затворен, останалите браузъри запазват първоначалните си стойности, вместо да бъдат преномерирани.
Индекс спрямо местоположение спрямо време на създаване: Сравнителна таблица
Трите идентификатора отговарят на три различни въпроса, а изборът на грешен е честа причина за периодични повреди.
| Аспект | индекс | Адрес | Време на създаване |
|---|---|---|---|
| Име на собственост | индекс | място | време за създаване |
| Основа за поръчка | Подреждане в йерархията на изходния код / обектите | Позиция на екрана в прозореца, рамката или диалоговия прозорец | Редът, в който са се отваряли екземплярите на браузъра |
| Правило за броене | Последователен, за клас тестови обекти | Колони, отгоре надолу, след това отляво надясно | Последователно, за всеки браузър |
| Първа стойност | 0 | 0 | 0 |
| Отнася се за | Уеб и Windows класове | Главно стандартно Windows класове | Само обекти на браузъра |
| Почивки, когато | Промени в реда на маркиране | Оформлението е преместено или оразмерено | Windows отварят се в различна последователност |
| Най-добре се използва за | Повтарящи се контроли за мрежа или таблица | Стари формуляри за настолни компютри с фиксирано оформление | Уеб потоци с множество прозорци, като например изскачащи прозорци за плащане |
Как да зададете порядковия идентификатор в хранилището на обекти
Порядковият идентификатор се конфигурира за всеки клас тестов обект и се прилага автоматично към всеки обект от този клас, който UFT учи се впоследствие. Съществуващите обекти, които вече са в хранилището, не се актуализират със задна дата.
- отворено UFT и изберете Инструменти > Идентификация на обекти.
- Изберете средата, например Уеб или Стандартна Windows, от падащото меню „Среда“.
- Изберете класа на тестовия обект, който искате да промените, например WebEdit или WinButton.
- в Пореден идентификатор В секцията изберете Индекс, Местоположение, Време на създаване или Няма.
- Кликнете OK и да се преобучи обектът, така че новата ординална стойност да бъде уловена.
- Отворете хранилището за обекти, изберете обекта и потвърдете, че ординалното свойство вече се показва в списъка с описания.
Избор None деактивира изцяло резервния вариант за този клас. UFT тогава ще генерира грешка в идентификацията, а не предположение, което често е поведението, което искате в пакет, където тихата погрешна идентификация е по-вредна от чистия провал. Записването на вашите очаквания в добре написан документ тестов случай прави този компромис ясен за целия екип.
⚠️ Предупреждение: Промяната на порядковия идентификатор за клас е настройка на ниво машина, а не на ниво тест. Ако не се експортира и сподели, скриптовете, които се предават на вашата машина, могат да се провалят на машината на колега или на агента за изграждане.
Как да използваме ординални идентификатори в Descriptive програмиране
В описателното програмиране няма диалогов прозорец за идентификация на обекти. Порядковият номер се записва директно в описателния низ, точно както всяко друго име на свойство, и винаги е базиран на нула.
' 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 води до грешка „неподдържано свойство“.
- Твърдо кодиране на ординал в споделена функция. Функция за многократна употреба, която приема index:=2, става неизползваема в момента, в който втори екран с различно оформление я извика.
- Оставяне на ординалите в хранилището след стабилизиране на приложението. След като разработчиците добавят стабилни идентификатори, прегледайте отново обектите и заменете ординала с новото свойство.
- Разчитане на ординали вътре в цикли върху мрежи. предпочитам
ChildObjects, което връща активна колекция, така че броят отразява текущата страница, а не записаната.
Ресурси
Изтеглете уеб страниците, използвани в горния урок, за самостоятелна практика
Порядковите идентификатори са една малка част от модела за идентификация на обекти. За да видите как се вписват в по-широкия работен процес, продължете с пълния QTP/UFT тренировъчна серия, прегледайте основите в тестване на софтуер, научете как се управляват резултатите в Урок за HP ALMи сравнете стратегиите за локализиране с Selenium настойнически.
Въпроси и Отговори
Кликнете тук ако видеото не е достъпно

