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.
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.
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:
- Indeksbasert
- Sted basert
- 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.
- Open UFT og velg Verktøy > Objektidentifikasjon.
- Velg miljøet, for eksempel Nett eller Standard Windows, fra rullegardinmenyen Miljø.
- Velg testobjektklassen du vil endre, for eksempel WebEdit eller WinButton.
- på Ordinal identifikator seksjonen, velg Indeks, Plassering, Opprettelsestidspunkt eller Ingen.
- Klikk OK og lær objektet på nytt slik at den nye ordinalverdien blir registrert.
- Å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
Klikk her. hvis videoen ikke er tilgjengelig


