Descriptive programmering i QTP/UFT: Dynamisk och statisk
Vad är Descripthar du programmering?
Descriptive programmering används för att utföra operationer på ett objekt i AUT vars definition inte är lagrad i objektförrådet. Med den här mekanismen kan du kringgå identifiering från objektförrådet och tillhandahålla objektet Descripti själva uttalandet.
Ett objektnamn används helt enkelt för att mappa ett objekt i skript med dess beskrivning i ett objektförråd. Det betyder att om du ändrar objektnamnet i ditt skript och objektförråd, bör skriptet köras. Se följande video om detta koncept
Klicka här. om videon inte är tillgänglig
Video Highlights
- Ta bort objektet Description av Agent Namn Win Edit Box från Object Repository. Om du kör testet igen kommer det att misslyckas eftersom det inte kan känna igen objektet. Låt oss undersöka anledningen till att skriptet misslyckas
- Under Run Time identifierar Micro Focus UFT operationen som utförs på WinEdit-rutan och objektet Description i Object Repository lagras som Agent Name. Den använder detta namn för att spåra objektet i ett objektförråd. För en förälder kan du inte ha två underordnade objekt med samma namn. Därför mappar QTP unikt objektet i förvaret. Den använder sedan den lagrade beskrivningen i Object Repository och ersätter namnet med beskrivningen. Den använder sedan denna sats för att identifiera objektet i applikationen som testas
- Eftersom vi i vårt fall hade tagit bort den här objektbeskrivningen helt och hållet misslyckas skriptet
- Men tänk om du som testare anger objektbeskrivningarna direkt i ditt skript istället för att QTP ersätter objektbeskrivningen. Detta är inget annat än "Descriptive programmering"
Typer av Descriptive programmering
Du kan använda Descriptjag programmerar på två sätt
- Statisk
- Dynamisk
Statisk Descriptive programmering
I Static Method, för objektidentifiering, anger du ett objekts egenskap i följande format
property:=values,
Detta format kallas egenskapsvärdepar och omges av inverterade kommatecken
Om ditt objekt använder flera beskrivningar för identifiering, kan du ange de med kommatecken
Så i vårt fall blir beskrivningen för Agent Name
"nativeclass:=Edit", "attached text:=Agent Name:"
Dynamisk Descriptive programmering
Den andra metoden för att göra samma åtgärd är att använda Dynamic Descriptive programmering
Om ditt skript använder den beskrivande programmeringsobjektkandidaten flera gånger, kommer det att vara väldigt tröttsamt att ange alla egenskapsvärdepar för varje påstående
I sådana fall kan du använda dig av Descriptjonklass tillhandahålls av QTP
Syntaxen för att skapa ett beskrivningsobjekt är
Set MyDescription = Description.Create(); MyDescription("property").Value = "property-value";
Detta är den Dynamisk metod
Varför använda Descripthar du programmering?
Videoutskrift
- Miljonfrågan är varför man ska använda DP när objektidentifieringsprocessen hanteras av QTP
- Anta att du får i uppdrag att testa en jobbportal. Du anger en sökfråga i portalen och
- ditt test förväntar dig att du väljer alla tillgängliga jobb och klickar på sökjobbet
- Men antalet jobb som reflekteras beror på sökfrågan och tillgängliga jobb vid tidpunkten för skriptkörning, men det finns inget sätt att i förväg förutsäga antalet jobb som skulle återspeglas
- I sådana fall kan du använda beskrivande programmering. Även om du inte känner till antalet och namnen på kryssrutorna så känner du till klassen för objekten som "WebCheckBox"
- Du kan använda ChildObject-metod att returnera objekt som tillhör en viss förälder
- En kodrad som –
Set allObjects = Browser("Jobs").Page("QTP").ChildObjects()
- Kommer att returnera alla underordnade objekt för denna sida.
- Men vi vill bara ha WebCheckBox föremål. För att göra det kan vi skapa ett filterskapande objekt och ange dess egenskap som webbkryssruta och skicka detta filter som ett argument för ChildObjects-metoden
- I det här fallet returneras endast kryssrutorna.
- Därefter kan du skriva en kod som denna som kommer åt hela samlingen av kryssrutor från noll och sätter alla kryssrutor PÅ.
- Därefter kan du klicka på appliceringsknappen för att slutföra testet
- Du kan också använda Descriptive Programmering för att köra objekt som är svåra att spela in som Auto-Hide Panels, Objekt med ändrade hierarkier, kapslade inre objekt, undermenyer.
- Du kan också göra avancerade strängmanipulationer med beskrivande programmering
- I samband med index-egenskap kan beskrivande programmering vara mycket användbar för att identifiera svåra objekt.
- Om du använder programmatisk beskrivning för ett objekt i objekthierarkin måste du använda beskrivningsprogrammering för efterföljande underordnade objekt
- Till exempel för sidobjektet användes beskrivande programmering men för efterföljande underordnade objekt används WinEdit Object Repository vilket är felaktigt
- Tvärtom här för både Page och WinEdit används beskrivande programmering vilket är korrekt