Ordinal identifikator i QTP/UFTEksempel på objektidentifikasjon

⚡ Smart oppsummering

Ordinal identifikator i QTP/UFT er tie-breakeren UFT gjelder når obligatoriske og assisterende egenskaper fortsatt samsvarer med mer enn ett objekt, ved å bruke indeks-, plasserings- eller opprettelsestidsverdier for å velge et enkelt unikt objekt.

  • 🎯 Siste utvei: UFT legger bare til en ordinalidentifikator etter at obligatoriske og assisterende egenskaper ikke klarer å gjøre en beskrivelse unik.
  • 🔢 indeks: Numbers objekter av samme klasse etter kildekoderekkefølge, startende på 0, slik at index:=3 retter seg mot det fjerde treffet.
  • 📍 Sted: Numbers objekter etter skjermposisjon inne i vinduet, rammen eller dialogboksen, topp til bunn og venstre til høyre.
  • 🕒 Opprettelsestid: Gjelder bare nettleserobjekter og registrerer rekkefølgen hver nettleserforekomst ble åpnet i.
  • 🗂️ Objektidentifikasjon: Standard ordinaltypen for hver testobjektklasse kan redigeres under Verktøy > Objektidentifikasjon.
  • ⌨️ Descriptfem programmering: Send indeks, plassering eller opprettelsestidspunkt som en vanlig egenskap i objektbeskrivelsesstrengen.
  • ⚠️ Skjørhet: Ordinalverdier endres når sideoppsettet endres, så betrakt dem som en midlertidig løsning, aldri et designvalg.

Ordinal identifikator i QTP/UFT forklart med indeks, plassering og opprettelsestid

Hva er en ordinal identifikator i QTP/UFT?

An Ordinell identifikator er en numerisk egenskap som UFT (tidligere QTP) legger til en objektbeskrivelse når de obligatoriske og assisterende egenskapene som registreres under en opptaksøkt ikke er nok til å identifisere objektet unikt. I stedet for å mislykkes, faller verktøyet tilbake på en teller som i praksis sier «ta det tredje objektet i denne klassen».

Som standard finnes det en ordinal identifikatortype for hver testobjektklasse. En WebEdit er nummerert forskjellig fra en WinButton, og en Browser er nummerert forskjellig igjen. Du kan vise eller endre standard ordinal identifikator for en klasse i Objektidentifikasjonsvinduet.

Innstilling av ordinal identifikator i QTP/UFT Vindu for objektidentifikasjon

Som skjermbildet ovenfor viser, ligger rullegardinmenyen Ordinal identifikator nederst i dialogboksen Objektidentifikasjon, under listen over obligatoriske og assisterende egenskaper. Denne plasseringen er ikke tilfeldig: den speiler rekkefølgen der UFT konsulterer faktisk de tre gruppene.

Det finnes tre typer ordinale identifikatorer i UFT:

  1. Indeksbasert
  2. Sted basert
  3. Opprettelsestid

Hvorfor UFT Bruker kun ordinære identifikatorer som en siste utvei

Objektidentifikasjon i UFT kjører som en kaskade. Obligatoriske egenskaper læres først. Hvis de ikke gir et eneste treff, legges assisterende egenskaper til én etter én til beskrivelsen er unik. Først når begge gruppene er oppbrukt, blir UFT legge ved en ordinalidentifikator, og under kjøretid konsulteres den smarte identifikasjonsmekanismen før ordinalverdien klareres.

Årsaken til den rangeringen er stabilitet. Obligatoriske og hjelpeegenskaper beskriver hva et objekt er: navnet, HTML-taggen, typen, etiketten. En ordinal identifikator beskriver bare hvor objektet lå tilfeldigvis der i opptaket. Alt som endrer siden endrer tallet:

  • En utvikler setter inn et skjult felt over det du automatiserer.
  • Et reklamebanner legger til to ekstra lenker i overskriften.
  • Et responsivt oppsett omflyter skjemaet fra to kolonner til én.
  • En popup-nettleser åpnes tidligere enn den gjorde under den registrerte kjøringen.

Ingen av disse endringene bryter en beskrivelse som er bygget på et navn eller en ID, men hver enkelt endrer i stillhet hver indeks- og plasseringsverdi på siden. Dette er grunnen til at erfarne ingeniører behandler en ordinal identifikator som et signal om at objektbeskrivelsen trenger arbeid, ikke som en ferdig løsning. Det samme prinsippet gjelder på tvers av automatiseringstesting rammeverk generelt, inkludert lokaliseringsstrategi i Selenium.

💡 Tips: Før du godtar en ordinalidentifikator, åpne objektet i Object Spy og se etter et stabilt, tilpasset attributt. Å legge til attributtet i listen over assisterende egenskaper for klassen fjerner ofte behovet for en ordinal på alle fremtidige objekter av den typen.

Typer ordinære identifikatorer i UFT/QTP

Indeksbasert

  • Når en indeksbasert ordinalidentifikator brukes, UFT tildeler en verdi til indeks egenskapen til objektet under opptak.
  • Verdien er basert på rekkefølgen objektet vises i i kildekoden, ikke på skjermen.
  • Den første forekomsten har verdien 0.
  • Indeksegenskapsverdier er objektspesifikke, så hver testobjektklasse telles separat.
  • Derfor, hvis du bruker index:=3 for å beskrive et WebEdit-testobjekt, UFT søker etter det fjerde WebEdit-objektet på siden.
  • På samme måte, hvis du bruker index:=1 for å beskrive et WebButton-testobjekt, UFT søker etter det andre WebButton-objektet på siden.

Stedsbasert

  • Når en stedsbasert ordinalidentifikator brukes, UFT tildeler en verdi til plassering egenskapen til objektet for å identifisere det unikt.
  • Verdien er basert på rekkefølgen objektet vises i i vinduet, rammen eller dialogboksen, i forhold til andre objekter med identiske egenskaper.
  • Den første forekomsten av objektet er 0.
  • Verdier tilordnes i kolonner, fra topp til bunn og deretter fra venstre til høyre.
  • Plassering er standard ordinalidentifikator for de fleste standard Windows testobjektklasser, der visuell layout er mer stabil enn markuprekkefølge.

Opprettelsestid

  • Når ordinalidentifikatoren for opprettelsestidspunktet brukes, UFT tildeler en verdi til skapelsestidspunkt egenskapen til et nettleserobjekt.
  • Denne identifikatoren er bare tilgjengelig for webmiljøet og bare for testobjekter i nettleseren.
  • Verdien angir rekkefølgen nettleseren ble åpnet i forhold til andre åpne nettlesere.
  • Den første nettleseren som åpnes under kjøringen mottar creationtime:=0, og påfølgende nettlesere mottar 1, 2, 3 og så videre.
  • Hvis en nettleser lukkes, beholder de gjenværende nettleserne sine opprinnelige verdier i stedet for å bli nummerert på nytt.

Indeks vs. plassering vs. opprettelsestid: Sammenligningstabell

De tre identifikatorene svarer på tre forskjellige spørsmål, og å velge feil er en hyppig årsak til periodiske feil.

Aspekt Index Vårt kontor: CreationTime
Eiendomsnavn indeks plassering skapelsestidspunkt
Bestillingsgrunnlag Rekkefølge i kildekoden/objekthierarkiet Skjermposisjon i vinduet, rammen eller dialogboksen Rekkefølgen nettleserforekomster åpnet i
Telleregel Sekvensiell, per testobjektklasse Kolonner, topp til bunn, deretter venstre til høyre Sekvensiell, per nettleserforekomst
Første verdi 0 0 0
Gjelder Nett og Windows klasser Hovedsakelig standard Windows klasser Kun nettleserobjekter
Bryter når Endringer i markeringsrekkefølge Oppsettet er flyttet eller endret størrelse Windows åpne i en annen rekkefølge
Best brukt til Gjentakende rutenett- eller tabellkontroller Eldre skrivebordsskjemaer med fast oppsett Nettflyter med flere vinduer, for eksempel popup-vinduer for betalinger

Slik angir du ordinalidentifikatoren i objektarkivet

Ordinalidentifikatoren konfigureres per testobjektklasse, og den brukes automatisk på hvert objekt i den klassen som UFT lærer etterpå. Eksisterende objekter som allerede er i depotet oppdateres ikke med tilbakevirkende kraft.

  1. Open UFT og velg Verktøy > Objektidentifikasjon.
  2. Velg miljøet, for eksempel Nett eller Standard Windows, fra rullegardinmenyen Miljø.
  3. Velg testobjektklassen du vil endre, for eksempel WebEdit eller WinButton.
  4. Ordinal identifikator seksjonen, velg Indeks, Plassering, Opprettelsestidspunkt eller Ingen.
  5. Klikk OK og lær objektet på nytt slik at den nye ordinalverdien blir registrert.
  6. Åpne objektarkivet, velg objektet, og bekreft at ordinalegenskapen nå vises i beskrivelseslisten.

Velge none deaktiverer reservefunksjonen for den klassen fullstendig. UFT vil da føre til en identifikasjonsfeil i stedet for gjetning, som ofte er den oppførselen du ønsker i en suite der stille feilidentifikasjon er mer skadelig enn en ren feil. Registrer forventningene dine i en velskrevet testforsøk gjør den avveiningen eksplisitt for hele teamet.

⚠️ Advarsel: Å endre ordinalidentifikatoren for en klasse er en innstilling på maskinnivå, ikke en på testnivå. Hvis den ikke eksporteres og deles, kan skript som sendes på maskinen din mislykkes på en kollegas maskin eller på byggeagenten.

Slik bruker du ordinære identifikatorer i Descriptive programmering

I beskrivende programmering finnes det ingen dialogboks for objektidentifikasjon. Ordinalet skrives direkte inn i beskrivelsesstrengen, akkurat som alle andre egenskapsnavn, og det er alltid nullbasert.

' 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

Utgang:

Filled WebEdit occurrence #4
Clicked WebButton occurrence #2
Switching to browser opened at position #2

Et tryggere mønster er å kombinere fast eiendom med ChildObjects slik at ordinalen valideres før den brukes. Eksemplet nedenfor forutsetter en side som inneholder fem samsvarende WebEdit-objekter og en indeks på 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

Utgang:

Index 9 is out of range; only 5 objects match

Denne beskyttelsen gjør om en lite nyttig kjøretidsfeil av typen «Kan ikke identifisere objektet» til en lesbar melding, noe som er viktig når resultater publiseres til en defekt. tracker eller til HP ALM integrert med UFT.

Vanlige feil ved bruk av ordinære identifikatorer

De fleste ordinalrelaterte defekter tractilbake til et lite sett med tilbakevendende feil.

  • Teller fra 1. Hver ordinalidentifikator starter på 0. Å skrive index:=1 for det første feltet er den vanligste feilen, og den produserer en av-for-en-feil som ser ut som et timingproblem.
  • Forvirrende indeks med plassering. Indeksen følger kildekoden; plasseringen følger skjermen. På en side der CSS endrer rekkefølgen på elementer, er de to verdiene forskjellige, og de bytter om.ping de retter seg i stillhet mot feil kontroll.
  • Bruk av CreationTime utenfor webmiljøet. Egenskapen finnes bare på nettleserobjekter. Hvis den brukes på et side-, ramme- eller vinduobjekt, utløses en feilmelding om en ikke-støttet egenskap.
  • Hardkoding av en ordinal til en delt funksjon. En gjenbrukbar funksjon som antar index:=2 blir ubrukelig i det øyeblikket en annen skjerm med et annet oppsett kaller den.
  • La ordinaler ligge i depotet etter at applikasjonen har stabilisert seg. Når utviklere legger til stabile ID-er, besøk objektene på nytt og erstatt ordinalen med den nye egenskapen.
  • Stol på ordinaler inne i løkker over rutenett. Kjøp helst ChildObjects, som returnerer en aktiv samling, slik at antallet gjenspeiler gjeldende side i stedet for den registrerte.

Ressurser

Last ned nettsidene som ble brukt i veiledningen ovenfor for selvøving.

Ordinale identifikatorer er en liten del av objektidentifikasjonsmodellen. For å se hvordan de passer inn i den større arbeidsflyten, fortsett med den fullstendige QTP/UFT treningsserie, gjennomgå det grunnleggende i programvaretesting, lær hvordan resultater håndteres i HP ALM-veiledning, og sammenlign lokaliseringsstrategier med Selenium tutorial.

Spørsmål og svar

Standardverdien varierer etter klasse. De fleste webtestobjekter, som WebEdit og WebButton, har Index som standard, Browser-objekter har CreationTime som standard, og Standard Windows Klasser har standardinnstillingen Plassering. Hver standard er synlig og kan redigeres i vinduet Objektidentifikasjon.

Smart identifikasjon kjører først. UFT prøver den lærte beskrivelsen, deretter Smart Identification hvis den er aktivert for klassen, og faller bare tilbake til den ordinale identifikatoren når begge ikke klarer å produsere et enkelt samsvarende objekt.

Ja. Sett rullegardinmenyen Ordinal identifikator til Ingen for klassen i vinduet Objektidentifikasjon. UFT rapporterer deretter en identifikasjonsfeil i stedet for å gjette, noe som er tryggere for suiter der et klikk på feil objekt kan ødelegge testdata.

Litt. UFT må oppregne alle objekter i klassen før den kan telle til den forespurte posisjonen, så sider med hundrevis av lignende kontroller tar lengre tid å løse enn en beskrivelse bygget på et unikt navn eller en ID.

Ja. AI-basert identifikasjon i nåværende UFT Man utløser matcher kontroller etter visuelt utseende og etikettekst i stedet for markupposisjon, slik at et felt kan finnes etter hvordan det ser ut selv når de omkringliggende indeksverdiene endres.

En AI-assistent kan skanne en eksport av et depot, flagge alle beskrivelser som inneholder indeks, plassering eller opprettelsestidspunkt, og foreslå erstatninger fra de innhentede HTML-attributtene. Et menneske må fortsatt verifisere hvert forslag mot den aktive applikasjonen før det kjøres.

Klikk her. hvis videoen ikke er tilgjengelig

Oppsummer dette innlegget med: