DescriptActief programmeren in QTP/UFT: dynamisch en statisch

Wat is Descriptive programmeren?

Descriptive-programmering wordt gebruikt om bewerkingen uit te voeren op een object in de AUT waarvan de definitie niet is opgeslagen in de Object Repository. Met dit mechanisme kunt u de identificatie van de Object Repository omzeilen en de Object Descriptin de verklaring zelf.

Een objectnaam wordt eenvoudigweg gebruikt om een ​​object in een script met zijn beschrijving in een objectrepository in kaart te brengen. Dit betekent dat als u de objectnaam in uw script en objectrepository wijzigt, het script moet worden uitgevoerd. Bekijk de volgende video over dit concept

Klik hier als de video niet toegankelijk is

Video Highlights

  • Verwijder het object Description van Agentnaam Win Edit Box uit de Objectrepository. Als u de test opnieuw uitvoert, mislukt deze omdat deze het object niet kan herkennen. Laten we eens kijken naar de reden waarom het script faalt
  • Tijdens de uitvoeringstijd identificeert Micro Focus UFT de bewerking die wordt uitgevoerd op het WinEdit-vak en het object Description in Object Repository wordt opgeslagen als Agent Name. Het gebruikt deze naam om het object in een object repository te volgen. Voor een parent, kunt u niet twee child objecten met dezelfde naam hebben. Daarom brengt QTP het object in de repository op unieke wijze in kaart. Het gebruikt vervolgens de opgeslagen beschrijving in de Object Repository en vervangt de naam door de beschrijving. Het gebruikt vervolgens deze verklaring om het object in de te testen toepassing te identificeren
  • Omdat we in ons geval deze objectbeschrijving helemaal hadden verwijderd, mislukt het script
  • Maar wat als je als tester in plaats van dat QTP de objectbeschrijving vervangt, direct de objectbeschrijvingen in je script specificeert. Dit is niets anders dan “Descriptive programmeren”

Types van Descriptive programmering

Je kunt gebruiken Descriptive programmeren op twee manieren

  1. Statisch
  2. Dynamisch

Statisch Descriptive programmering

In de statische methode specificeert u voor objectidentificatie de eigenschap van een object in de volgende indeling

property:=values,

Dit formaat wordt eigenschapswaardepaar genoemd en staat tussen aanhalingstekens

Als uw object gebruikt meerdere beschrijvingen ter identificatie, u kunt deze opgeven met komma's

In ons geval wordt de beschrijving voor Agentnaam dus

"nativeclass:=Edit", "attached text:=Agent Name:"

Dynamisch Descriptive programmering

De tweede methode om dezelfde actie uit te voeren is het gebruik van Dynamic Descriptive programmering

Als uw script de beschrijvende programmeerobjectkandidaat meerdere keren gebruikt, zal het erg vermoeiend zijn om alle eigenschapswaardeparen voor elke instructie te specificeren

In dergelijke gevallen kunt u gebruik maken van Description-klasse aangeboden door QTP

De syntaxis voor het maken van een beschrijvingsobject is

Set MyDescription = Description.Create();
MyDescription("property").Value = "property-value";

Dit is de Dynamische methode

Waarom gebruiken Descriptive programmeren?

Videotranscript

  • De vraag van een miljoen dollar is waarom DP moet worden gebruikt wanneer het objectidentificatieproces wordt afgehandeld door QTP
  • Stel dat u de opdracht krijgt om een ​​banenportaal te testen. U voert een zoekopdracht in het portaal in en
  • uw test verwacht dat u alle beschikbare vacatures selecteert en op de vacature klikt
  • Maar het aantal weergegeven banen zal afhangen van de zoekopdracht en de banen die beschikbaar zijn op het moment dat het script wordt uitgevoerd, maar er is geen manier om vooraf het aantal banen te voorspellen dat zou worden weerspiegeld
  • In zulke gevallen kunt u beschrijvende programmering gebruiken. Ook al kent u het aantal en de namen van de selectievakjes niet, u kent wel de klasse voor de objecten als "WebCheckBox"
  • U kunt gebruik maken van de ChildObject-methode om objecten terug te geven die tot een bepaalde ouder behoren
  • Een regel code zoals -
    Set allObjects = Browser("Jobs").Page("QTP").ChildObjects()
  • Retourneert alle onderliggende objecten voor deze pagina.
  • Maar we willen alleen WebCheckBox objecten. Om dit te doen kunnen we een filtercreatieobject maken en de eigenschap instellen als web checkbox en dit filter doorgeven als een argument voor de ChildObjects-methode
  • In dit geval worden alleen de selectievakjes geretourneerd.
  • Vervolgens kunt u een code schrijven zoals deze, die toegang krijgt tot de volledige verzameling selectievakjes, beginnend bij nul, en alle selectievakjes op AAN zet.
  • Vervolgens kunt u op de knop 'Solliciteer' klikken om de test af te ronden
  • U kunt ook gebruik maken van DescriptLive programmeren om objecten uit te voeren die moeilijk vast te leggen zijn, zoals automatisch verborgen panelen, objecten met veranderende hiërarchieën, geneste interne objecten en submenu's.
  • U kunt ook geavanceerde tekenreeksmanipulaties uitvoeren met behulp van beschrijvend programmeren
  • In combinatie met de indexeigenschap kan beschrijvend programmeren zeer nuttig zijn bij het identificeren van moeilijke objecten.
  • Als u een programmatische beschrijving gebruikt voor een object in de objecthiërarchie, moet u beschrijvingsprogrammering gebruiken voor de daaropvolgende onderliggende objecten
  • Voor het paginaobject is bijvoorbeeld beschrijvend programmeren gebruikt, maar voor het daaropvolgende onderliggende object wordt WinEdit Object Repository gebruikt, wat onjuist is
  • Integendeel, hier wordt voor zowel Page als WinEdit beschrijvend programmeren gebruikt, wat correct is