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.

  • 🎯 Poslední možnost: UFT přidá ordinální identifikátor pouze tehdy, když povinné a pomocné vlastnosti nedokážou zajistit jedinečnost popisu.
  • 🔢 Index: Numbers objekty stejné třídy podle pořadí zdrojového kódu, počínaje od 0, takže index:=3 cílí na čtvrtý shodný bod.
  • 📍 pronájem: Numbers objekty podle polohy na obrazovce uvnitř okna, rámce nebo dialogu, shora dolů a zleva doprava.
  • 🕒 Čas vytvoření: Platí pouze pro objekty prohlížeče a zaznamenává pořadí, ve kterém byla každá instance prohlížeče otevřena.
  • 🗂️ Identifikace objektu: Výchozí ordinální typ pro každou třídu testovacích objektů lze upravovat v nabídce Nástroje > Identifikace objektů.
  • ⌨️ Descriptživé programování: Předejte index, location nebo creationtime jako běžnou vlastnost uvnitř řetězce popisu objektu.
  • ⚠️ Křehkost: Ordinální čísla se mění vždy, když se změní rozvržení stránky, proto je berte jako dočasnou opravu, nikdy ne jako designovou volbu.

Ordinální identifikátor v QTP/UFT vysvětleno pomocí indexu, umístění a času vytvoření

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.

Nastavení ordinálního identifikátoru v QTP/UFT Okno 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:

  1. Na základě indexu
  2. Umístění založené
  3. Č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í.

  1. Otevřená UFT a zvolte Nástroje > Identifikace objektů.
  2. Vyberte prostředí, například Web nebo Standardní Windows, z rozbalovací nabídky Prostředí.
  3. Vyberte třídu testovacího objektu, kterou chcete změnit, například WebEdit nebo WinButton.
  4. v Ordinální identifikátor V části vyberte možnost Index, Umístění, Čas vytvoření nebo Žádné.
  5. klikněte OK a znovu se naučit objekt tak, aby byla zachycena nová ordinální hodnota.
  6. 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

Výchozí nastavení se liší podle třídy. Většina webových testovacích objektů, jako například WebEdit a WebButton, má výchozí hodnotu Index, objekty Browser mají výchozí hodnotu CreationTime a Standard. Windows Výchozí nastavení tříd je Umístění. Každé výchozí nastavení je viditelné a upravitelné v okně Identifikace objektu.

Inteligentní identifikace se spustí jako první. UFT Zkouší naučený popis, poté inteligentní identifikaci, pokud je pro danou třídu povolena, a vrací se k ordinálnímu identifikátoru pouze tehdy, když se oběma nepodaří vytvořit jediný odpovídající objekt.

Ano. V okně Identifikace objektu nastavte pro danou třídu rozbalovací nabídku Pořadový identifikátor na hodnotu Žádný. UFT pak nahlásí chybu identifikace namísto hádání, což je bezpečnější pro sady, kde by kliknutí na nesprávný objekt mohlo poškodit testovací data.

Mírně. UFT Musí vyjmenovat všechny objekty třídy, než se mohou započítat na požadovanou pozici, takže stránky se stovkami podobných ovládacích prvků se vyhodnocují déle než popis postavený na jedinečném názvu nebo ID.

Ano. Identifikace založená na umělé inteligenci v současnosti UFT Jeden uvolňuje shody ovládacích prvků podle vizuálního vzhledu a textu popisku, nikoli podle pozice značky, takže pole lze lokalizovat podle toho, jak vypadá, i když se okolní hodnoty indexu posunou.

Asistent s umělou inteligencí může prohledat export z repozitáře, označit každý popis obsahující index, umístění nebo čas vytvoření a navrhnout náhrady z zachycených atributů HTML. Člověk musí každý návrh před potvrzením ověřit v živé aplikaci.

klikněte zde pokud video není přístupné

Shrňte tento příspěvek takto: