Beskrivende programmering i QTP/UFT: Dynamisk og statisk

Hvad er beskrivende programmering?

Beskrivende 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 objektbeskrivelsen i selve sætningen.

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 folloenwing video om dette koncept

Klik link. hvis videoen ikke er tilgængelig

Video Højdepunkter

  • Slet objektbeskrivelsen af ​​agentnavn 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 operation, der udføres på WinEdit box og objektbeskrivelsen i objektlageret gemmes 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 "Beskrivende programmering"

Typer af beskrivende programmering

Du kan bruge beskrivende programmering på to måder

  1. statisk
  2. Dynamisk

Statisk beskrivende programmering

I Static Method angiver du til objektidentifikation et objekts egenskab i folloenwing 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 beskrivende programmering

Den anden metode til at udføre den samme handling er at bruge dynamisk beskrivende 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 Beskrivelse 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 bruge beskrivende 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. Også selvom du ikke kender nummeret og navnene på checkenboxes du kender 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 indstille dets egenskab som webcheck box og send dette filter som et argument for ChildObjects-metoden
  • I dette tilfælde kun checkenboxes returneres.
  • Dernæst kan du skrive en kode som denne, som får adgang til hele checksamlingenboxstarter fra nul og sætter alle kontrollerboxes TIL.
  • Dernæst kan du klikke på knappen Anvend for at fuldføre testen
  • Du kan også bruge beskrivende programmering til at køre objekter, som er svære at optage, f.eks. automatisk skjul paneler, objekter med skiftende hierarchies, 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