Descriptive programmering i QTP/UFT: Dynamisk og statisk
Hvad er Descripthar du programmering?
Descriptive programmering bruges til at udføre operationer på et objekt i AUT, hvis definition ikke er gemt i objektlageret. Ved at bruge denne mekanisme kan du omgå identifikation fra objektlageret og levere objektet Description i selve erklæringen.
Et objektnavn bruges simpelthen til at kortlægge et objekt i script med dets beskrivelse i et objektlager. Det betyder, at hvis du ændrer objektnavnet i dit script og objektlager, skal scriptet køre. Se følgende video om dette koncept
Klik link. hvis videoen ikke er tilgængelig
Video Højdepunkter
- Slet objektet Description af Agent Navn Win Edit Box fra Object Repository. Hvis du kører testen igen, vil den mislykkes, da den ikke kan genkende objektet. Lad os undersøge årsagen til, at scriptet fejler
- Under Run Time identificerer Micro Focus UFT den handling, der udføres på WinEdit-boksen og objektet Description i Object Repository er gemt som Agentnavn. Den bruger dette navn til at spore objektet i et objektlager. For en forælder kan du ikke have to underordnede objekter med samme navn. Derfor kortlægger QTP entydigt objektet i depotet. Den bruger derefter den gemte beskrivelse i objektlageret og erstatter navnet med beskrivelsen. Den bruger derefter denne erklæring til at identificere objektet i den applikation, der testes
- Da vi i vores tilfælde havde slettet denne objektbeskrivelse helt, fejler scriptet
- Men hvad nu hvis du som tester i stedet for at QTP erstatter objektbeskrivelsen direkte angiver objektbeskrivelserne i dit script. Dette er intet andet end "Descriptive programmering"
Typer af Descriptive programmering
Du kan bruge Descriptive programmering på to måder
- statisk
- Dynamisk
statisk Descriptive programmering
I Static Method angiver du til objektidentifikation et objekts egenskab i følgende format
property:=values,
Dette format kaldes egenskabsværdipar og er omgivet af omvendte kommaer
Hvis dit objekt bruger flere beskrivelser til identifikation, kan du angive dem ved hjælp af kommaer
Så i vores tilfælde bliver beskrivelsen for Agentnavn
"nativeclass:=Edit", "attached text:=Agent Name:"
Dynamisk Descriptive programmering
Den anden metode til at udføre den samme handling er at bruge Dynamic Descriptive programmering
I tilfælde af at dit script bruger den beskrivende programmeringsobjektkandidat flere gange, vil det være meget trættende at angive alle egenskabsværdiparrene for hver erklæring
I sådanne tilfælde kan du gøre brug af Description klasse leveret af QTP
Syntaxen for at oprette et beskrivelsesobjekt er
Set MyDescription = Description.Create(); MyDescription("property").Value = "property-value";
Dette er den Dynamisk metode
Hvorfor brug Descripthar du programmering?
Videoudskrift
- Million dollar spørgsmålet er, hvorfor man skal bruge DP, når objektidentifikationsprocessen håndteres af QTP
- Antag, at du får tildelt at teste en jobportal. Du indtaster en søgeforespørgsel i portalen og
- din test forventer, at du vælger alle ledige job og klikker på ansøg jobbet
- Men antallet af job, der afspejles, vil afhænge af søgeforespørgslen og ledige job på tidspunktet for udførelse af scriptet, men der er ingen måde at forudsige antallet af job, der vil blive afspejlet
- I sådanne tilfælde kan du bruge beskrivende programmering. Selvom du ikke kender antallet og navnene på afkrydsningsfelterne, kender du klassen for objekterne som "WebCheckBox"
- Du kan bruge ChildObject metode at returnere objekter, der tilhører en bestemt forælder
- En kodelinje som -
Set allObjects = Browser("Jobs").Page("QTP").ChildObjects()
- Vil returnere alle underordnede objekter for denne side.
- Men vi vil kun have WebCheckBox genstande. For at gøre det kan vi oprette et filteroprettelsesobjekt og sætte dets egenskab som web-afkrydsningsfelt og sende dette filter som et argument for ChildObjects-metoden
- I dette tilfælde returneres kun afkrydsningsfelterne.
- Dernæst kan du skrive en kode som denne, som får adgang til hele samlingen af afkrydsningsfelter startende fra nul og sætter alle afkrydsningsfelter TIL.
- Dernæst kan du klikke på knappen Anvend for at fuldføre testen
- Du kan også bruge Descriptive Programmering til at køre objekter, som er svære at optage, såsom automatisk skjul paneler, objekter med skiftende hierarkier, indlejrede indre objekter, undermenuer.
- Du kan også udføre avancerede strengmanipulationer ved hjælp af beskrivende programmering
- I forbindelse med indeksegenskaber kan beskrivende programmering være meget nyttig til at identificere vanskelige objekter.
- Hvis du bruger programmatisk beskrivelse for et objekt i objekthierarki, skal du bruge beskrivelsesprogrammering til efterfølgende underordnede objekter
- For eksempel, for sideobjektet, blev der brugt beskrivende programmering, men for det efterfølgende underordnede objekt bruges WinEdit Object Repository, hvilket er forkert
- Tværtimod her bruges både Page og WinEdit beskrivende programmering, hvilket er korrekt