Ordinální identifikátor v QTP/UFTPříklad identifikace objektu
⚡ Chytré shrnutí
Ordinální identifikátor v QTP/UFT je rozhodujícím faktorem pro rozhodující zápas UFT platí, když povinné a pomocné vlastnosti stále odpovídají více než jednomu objektu, přičemž se k výběru jednoho jedinečného objektu používají hodnoty Index, Location nebo CreationTime.

Co je to ordinální identifikátor v QTP/UFT?
An Pořadový identifikátor je číselná vlastnost, která UFT (dříve QTP) přidává k popisu objektu, když povinné a pomocné vlastnosti zachycené během relace záznamu nestačí k jednoznačné identifikaci objektu. Místo selhání se nástroj vrátí k čítači, které v podstatě říká „vezměte třetí objekt této třídy“.
Ve výchozím nastavení existuje pro každou třídu testovacích objektů typ ordinálního identifikátoru. WebEdit je číslován jinak než WinButton a Browser je číslován opět jinak. Výchozí ordinální identifikátor pro třídu můžete zobrazit nebo upravit v okně Identifikace objektu.
Jak ukazuje výše uvedený snímek obrazovky, rozbalovací nabídka Ordinální identifikátor se nachází ve spodní části dialogového okna Identifikace objektu, pod seznamy povinných a pomocných vlastností. Toto umístění není náhodné: odráží pořadí, ve kterém UFT ve skutečnosti konzultuje tyto tři skupiny.
Existují tři typy ordinálních identifikátorů UFT:
- Na základě indexu
- Umístění založené
- Čas vytvoření
Proč UFT Používá ordinální identifikátory pouze jako poslední možnost
Identifikace objektu v UFT běží kaskádovitě. Nejprve se učí povinné vlastnosti. Pokud nenaleznou ani jednu shodu, postupně se přidávají asistenční vlastnosti, dokud není popis jedinečný. Teprve když jsou obě skupiny vyčerpány. UFT připojit ordinální identifikátor a za běhu je před důvěryhodností ordinální hodnoty konzultován mechanismus inteligentní identifikace.
Důvodem pro toto pořadí je stabilita. Povinné a pomocné vlastnosti popisují co Objekt je: jeho název, jeho HTML tag, jeho typ, jeho popisek. Ordinální identifikátor popisuje pouze kde objekt se v okamžiku záznamu nacházel na stejném místě. Cokoli, co změní stránku, změní i číslo:
- Vývojář vloží skryté pole nad pole, které automatizujete.
- Reklamní banner přidá do záhlaví dva další odkazy.
- Responzivní rozvržení přeformátuje formulář ze dvou sloupců do jednoho.
- Vyskakovací okno prohlížeče se otevře dříve než během zaznamenaného běhu.
Žádná z těchto změn nenaruší popis postavený na názvu nebo ID, ale každá z nich tiše posune každou hodnotu indexu a umístění na stránce. Proto zkušení inženýři vnímají ordinální identifikátor jako signál, že popis objektu potřebuje práci, nikoli jako hotové řešení. Stejný princip platí napříč testování automatizace rámce obecně, včetně strategie lokátoru v Selenium.
💡 Tip: Před přijetím ordinálního identifikátoru otevřete objekt v nástroji Object Spy a vyhledejte stabilní vlastní atribut. Přidání tohoto atributu do seznamu pomocných vlastností pro danou třídu často odstraní potřebu ordinálního čísla u každého budoucího objektu daného typu.
Typy ordinálních identifikátorů v UFT/QTP
Na základě indexu
- Pokud se použije ordinální identifikátor založený na indexu, UFT přiřadí hodnotu index vlastnost objektu během nahrávání.
- Hodnota je založena na pořadí, ve kterém se objekt zobrazuje ve zdrojovém kódu, nikoli na obrazovce.
- První výskyt má hodnotu 0.
- Hodnoty vlastností indexu jsou specifické pro daný objekt, takže každá třída testovacích objektů se počítá samostatně.
- Pokud tedy použijete index:=3 k popisu testovacího objektu WebEdit, UFT vyhledá čtvrtý objekt WebEdit na stránce.
- Podobně, pokud použijete index:=1 k popisu testovacího objektu WebButton, UFT vyhledá druhý objekt WebButton na stránce.
Na základě umístění
- Pokud se použije ordinální identifikátor založený na poloze, UFT přiřadí hodnotu umístění vlastnost objektu, která jej umožňuje jednoznačně identifikovat.
- Hodnota je založena na pořadí, ve kterém se objekt objeví v okně, rámu nebo dialogovém okně ve vztahu k jiným objektům se stejnými vlastnostmi.
- První výskyt objektu je 0.
- Hodnoty se přiřazují ve sloupcích, shora dolů a poté zleva doprava.
- Poloha je výchozí ordinální identifikátor pro většinu standardních Windows třídy testovacích objektů, kde je vizuální rozvržení stabilnější než pořadí značek.
Čas vytvoření
- Pokud se použije ordinální identifikátor času vytvoření, UFT přiřadí hodnotu čas stvoření vlastnost objektu prohlížeče.
- Tento identifikátor je k dispozici pouze pro webové prostředí a pouze pro testovací objekty prohlížeče.
- Hodnota udává pořadí, ve kterém byl prohlížeč otevřen vzhledem k ostatním otevřeným prohlížečům.
- První prohlížeč otevřený během běhu obdrží hodnotu creationtime:=0 a následující prohlížeče obdrží hodnotu 1, 2, 3 atd.
- Pokud je prohlížeč zavřen, zbývající prohlížeče si zachovají své původní hodnoty, nikoli se přečíslují.
Index vs. umístění vs. čas vytvoření: Srovnávací tabulka
Tyto tři identifikátory odpovídají na tři různé otázky a výběr nesprávného identifikátoru je častou příčinou občasných selhání.
| Vzhled | index | Aktuální poloha | Čas vytvoření |
|---|---|---|---|
| Název nemovitosti | index | umístění | čas stvoření |
| Základ objednávání | Pořadí v hierarchii zdrojového kódu / objektů | Pozice obrazovky uvnitř okna, rámečku nebo dialogu | Pořadí, ve kterém se instance prohlížeče otevíraly |
| Pravidlo počítání | Sekvenční, na třídu testovaného objektu | Sloupce, shora dolů a poté zleva doprava | Sekvenční, pro každou instanci prohlížeče |
| První hodnota | 0 | 0 | 0 |
| Platí pro | Web a Windows třídy | Převážně standardní Windows třídy | Pouze objekty prohlížeče |
| Přeruší se, když | Změny pořadí značek | Rozvržení je přemístěno nebo změněna jeho velikost | Windows otevřít v jiném pořadí |
| Nejlépe se používá pro | Opakující se ovládací prvky mřížky nebo tabulky | Starší desktopové formuláře s pevným rozvržením | Víceokenní webové procesy, jako například vyskakovací okna pro platby |
Jak nastavit ordinální identifikátor v úložišti objektů
Ordinální identifikátor je konfigurován pro každou třídu testovacího objektu a je automaticky použit na každý objekt dané třídy, který UFT učí se dodatečně. Stávající objekty, které jsou již v repozitáři, se zpětně neaktualizují.
- Otevřená UFT a zvolte Nástroje > Identifikace objektů.
- Vyberte prostředí, například Web nebo Standardní Windows, z rozbalovací nabídky Prostředí.
- Vyberte třídu testovacího objektu, kterou chcete změnit, například WebEdit nebo WinButton.
- v Ordinální identifikátor V části vyberte možnost Index, Umístění, Čas vytvoření nebo Žádné.
- klikněte OK a znovu se naučit objekt tak, aby byla zachycena nová ordinální hodnota.
- Otevřete úložiště objektů, vyberte objekt a ověřte, zda se ordinální vlastnost nyní zobrazuje v seznamu popisů.
Volba Nevyplněno úplně zakáže záložní variantu pro danou třídu. UFT pak spíše vyvolá chybu identifikace než odhad, což je často chování, které chcete v sadě, kde tichá chybná identifikace je škodlivější než čisté selhání. Zaznamenejte si svá očekávání v dobře napsaném modelový případ činí tento kompromis explicitním pro celý tým.
Warning️ Varování: Změna ordinálního identifikátoru třídy je nastavení na úrovni počítače, nikoli na úrovni testu. Pokud není exportován a sdílen, skripty, které projdou na vašem počítači, mohou selhat na počítači kolegy nebo na agentu sestavení.
Jak používat ordinální identifikátory v Descriptive Programování
V deskriptivním programování neexistuje dialog pro identifikaci objektu. Ordinál se zapisuje přímo do popisného řetězce, stejně jako jakýkoli jiný název vlastnosti, a vždy je založen na nule.
' 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
Výstup:
Filled WebEdit occurrence #4 Clicked WebButton occurrence #2 Switching to browser opened at position #2
Bezpečnějším vzorem je kombinovat skutečné vlastnosti s ChildObjects takže ordinální číslo je před použitím ověřeno. Následující příklad předpokládá stránku obsahující pět odpovídajících objektů WebEdit a index 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
Výstup:
Index 9 is out of range; only 5 objects match
Tato ochrana promění neužitečnou běhovou chybu „Nelze identifikovat objekt“ na čitelnou zprávu, která je důležitá při publikování výsledků do defektu. tracker nebo do Integrace HP ALM s UFT.
Časté chyby při používání ordinálních identifikátorů
Většina ordinálních vad traczpět k malé sadě opakujících se chyb.
- Počítání od 1. Každý ordinální identifikátor začíná na 0. Zápis index:=1 pro první pole je nejčastější chybou a vede k chybě typu „off-by-one“, která vypadá jako problém s časováním.
- Matoucí index s umístěním. Index sleduje zdrojový kód; umístění sleduje obrazovku. Na stránce, kde CSS mění pořadí prvků, se tyto dvě hodnoty liší a prohodí se.ping tiše cílí na nesprávnou kontrolu.
- Použití CreationTime mimo webové prostředí. Vlastnost existuje pouze u objektů Browser. Její použití u objektů Page, Frame nebo Window vyvolá chybu unsupported-property.
- Pevné kódování ordinálu do sdílené funkce. Znovupoužitelná funkce, která předpokládá index:=2, se stane nepoužitelnou v okamžiku, kdy ji zavolá druhá obrazovka s jiným rozvržením.
- Ponechání ordinálů v repozitáři po stabilizaci aplikace. Jakmile vývojáři přidají stabilní ID, znovu prohlédněte objekty a nahraďte ordinál novou vlastností.
- Spoléhání se na ordinály uvnitř smyček nad mřížkami. Preferujte
ChildObjects, která vrací živou kolekci, takže počet odráží aktuální stránku, nikoli zaznamenanou.
Materiály
Stáhněte si webové stránky použité ve výše uvedeném tutoriálu pro samostudium
Ordinální identifikátory jsou jednou malou součástí modelu identifikace objektů. Chcete-li vidět, jak zapadají do širšího pracovního postupu, pokračujte v celém QTP/UFT tréninková série, zopakujte si základy v testování softwaru, zjistěte, jak se v ní spravují výsledky Výukový program HP ALMa porovnejte strategie lokátoru s Selenium konzultace.
Nejčastější dotazy
klikněte zde pokud video není přístupné

