Descriptive programming is very powerful concept in UFT. Descriptive programming can be considered for the following scenarios.
1. Application is having many dynamic objects. Dynamic objects are the objects whose properties are not constant ,instead they will change very frequently.
2. It will by pass the object repository. If object repository’size is huge.Loading repository and maintaining such a big repository can become a challenge.
3. Execution will be faster.
4. Without knowing the unique properties of the objects, it is easy to get the collection of the similar objects an work on that.
5. If multiple people are using shared object repository, then updating object repository and accessing it becomes troublesome if it is used by any other person at the same time. It will be in read -only mode.No such case with descriptive programming.
6. In keyword driven programming. Suppose, if application is not ready yet but you know the properties description of the objects. You can create the objects with those description and objects will be used when application is available.
Types of descriptive programming:
1. Static DP
2. Dynamic DP
Static DP: A line of code creates an object by using the objects properties and values.
E.g. Consider, you need to create an webedit object without adding it to the repository. The pair of property and value is used to define an object.
Read the properties of the object using object spy and then use them in defining object as shown below.
We can use multiple property and value combination.
'Browser and page are taken from OR and webedit descriptive programming Browser("Add Job").Page("Add Job").WebEdit("html id:=edit123","name:=username").Set "your value" 'or 'All 3 objects browser ,page , webedit uses descritive programming Browser(“micclass:=Browser”).Page(“micclass:=Page”).WebEdit("html id:=edit123","name:=username").Set "your value"
We can use regular expression as well as ordinal identifiers.
'Regular expression in webedit. Use '.*' Browser("Add Job").Page("Add Job").WebEdit("html id:=edit.*","name:=username").Set "your value" 'Using index ordinal identifier Browser("Add Job").Page("Add Job").WebEdit("html id:=edit123","name:=username","index:=0").Set "your value"
Dynamic DP: It can be used to identify the identical objects or get the collection of the childobjects under any parent objects.
E.g. Suppose, There are n no. of links on a page and we need to count the no. of links and print their text as well.In this case, we will create a description object and extract these links(childobjects) under the page(Parent object).
'Create a description object Set oDesc = Description.Create oDesc("micclass").value = "Link" ' Get child objects links Set oColl = Browser("name:=Google").Page("title:=Google").ChildObjects(oDesc) 'Get count of links on page msgbox oColl.count 'print text of all linka found For i = 0 to oColl.count-1 print oColl(i).GetRoProperty("text") Next