Beschrijvende programmering in QTP / UFT: dynamisch & Statisch

Inhoudsopgave:

Anonim

Wat is beschrijvend programmeren?

Beschrijvend programmeren wordt gebruikt om bewerkingen uit te voeren op een object in de AUT waarvan de definitie niet is opgeslagen in de objectrepository. Met behulp van dit mechanisme kunt u identificatie uit de Object Repository omzeilen en de Objectbeschrijving in de instructie zelf opgeven.

Een objectnaam wordt gewoon gebruikt om een ​​object in script toe te wijzen aan de beschrijving ervan in een objectrepository. 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 Hoogtepunten

  • Verwijder de Objectbeschrijving van Agentnaam Win Edit Box uit de Object Repository. Als u de test opnieuw uitvoert, zal deze mislukken omdat het het object niet kan herkennen. Laten we eens kijken waarom het script niet werkt
  • Tijdens runtime identificeert Micro Focus UFT de bewerking die wordt uitgevoerd op de WinEdit-box en wordt de objectbeschrijving in de objectrepository opgeslagen als agentnaam. Het gebruikt deze naam om het object in een objectrepository te volgen. Voor een ouder kunt u niet twee onderliggende objecten met dezelfde naam hebben. Daarom wijst QTP het object op unieke wijze toe in de repository. Het gebruikt dan de opgeslagen beschrijving in de Object Repository en vervangt de naam door de beschrijving. Vervolgens gebruikt het deze instructie om het object in de toepassing onder test / li> te identificeren
  • Omdat we in ons geval deze objectbeschrijving helemaal hadden verwijderd, mislukt het script / li>
  • Maar wat als u in plaats van QTP de objectbeschrijving vervangt, u als tester direct de objectbeschrijvingen specificeert in uw script. Dit is niets anders dan "Beschrijvend programmeren"

Soorten beschrijvende programmering

U kunt beschrijvend programmeren op twee manieren gebruiken

  1. Statisch
  2. Dynamisch

Statische beschrijvende programmering

In Static Method specificeert u voor objectidentificatie de eigenschap van een object in de volgende indeling

eigenschap: = waarden,

Dit formaat wordt het eigenschapswaardepaar genoemd en staat tussen aanhalingstekens>

Als uw object meerdere beschrijvingen gebruikt voor identificatie, kunt u deze specificeren met komma's >

Dus in ons geval wordt de beschrijving voor Agent Name

"nativeclass: = Bewerken", "bijgevoegde tekst: = Naam agent:"

Dynamische beschrijvende programmering

De tweede methode om dezelfde actie uit te voeren, is het gebruik van dynamisch beschrijvend programmeren

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 de Description Class van QTP

De syntaxis voor het maken van een beschrijvingsobject is

Set MyDescription = Description.Create ();MyDescription ("eigenschap"). Value = "eigenschap-waarde";

Dit is de dynamische methode

Waarom beschrijvende programmering gebruiken?

Videotranscriptie

  • De vraag van een miljoen dollar is waarom DP wordt 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 sollicitatie klikt
  • Maar het aantal weergegeven banen hangt af van de zoekopdracht en de beschikbare banen op het moment dat het script wordt uitgevoerd, maar er is geen manier om van tevoren te voorspellen hoeveel banen er zouden worden weergegeven.
  • In dergelijke gevallen kunt u beschrijvende programmering gebruiken. Hoewel u het nummer en de namen van de selectievakjes niet kent, kent u de klasse voor de objecten wel als "WebCheckBox"
  • U kunt de methode ChildObject gebruiken om objecten te retourneren die tot een bepaalde ouder behoren
  • Een regel code zoals -
    Stel allObjects = Browser ("Jobs"). Pagina ("QTP"). ChildObjects ()
  • Retourneert alle onderliggende objecten voor deze pagina.
  • Maar we willen alleen WebCheckBox-objecten. Om dit te doen kunnen we een filtercreatie-object maken en de eigenschap ervan instellen als web-selectievakje en dit filter doorgeven als een argument voor de methode ChildObjects
  • In dit geval worden alleen de selectievakjes geretourneerd.
  • Vervolgens kunt u een code zoals deze schrijven die toegang geeft tot de volledige verzameling selectievakjes, beginnend bij nul, en alle selectievakjes AAN zet.
  • Vervolgens kunt u op de knop Toepassen klikken om de test te voltooien
  • U kunt ook beschrijvende programmering gebruiken om objecten uit te voeren die moeilijk op te nemen zijn, zoals panelen automatisch verbergen, objecten met veranderende hiërarchieën, geneste innerlijke objecten, submenu's.
  • U kunt ook geavanceerde stringmanipulaties uitvoeren met behulp van beschrijvend programmeren
  • In combinatie met de eigenschap index kan beschrijvend programmeren erg handig zijn bij het identificeren van moeilijke objecten.
  • Als u programmatische beschrijving gebruikt voor een object in de objecthiërarchie, moet u beschrijvingsprogrammering gebruiken voor volgende onderliggende objecten
  • Voor het pagina-object werd bijvoorbeeld beschrijvende programmering gebruikt, maar voor het daaropvolgende onderliggende object wordt WinEdit Object Repository gebruikt, wat onjuist is
  • Integendeel, hier wordt voor zowel Page als WinEdit beschrijvende programmering gebruikt, wat correct is