Knowledge Share

Knowledge is NOT Power IMPLEMENTATION of knowledge is Power!!!
HomePortalGalleryCalendarFAQRegisterUsergroupsLog in


 Descriptive Programming

Go down 

Posts : 142
Points : 410
Reputation : 0
Join date : 2007-12-29
Location : Chennai

Descriptive Programming Empty
PostSubject: Descriptive Programming   Descriptive Programming Icon_minitimeSat Aug 11, 2012 3:08 pm

Descriptive Programming:

Whenever QTP records any action on any object of an application, it adds some description on how to recognize that object to a repository of objects called object repository. QTP cannot take action on an object until unless its object description is in the Object Repository. But
descriptive programming provides a way to perform action on objects
which are not in Object repository

Object Identification:
To identify an object during the play back of the scripts QTP stores some properties which helps QTP to uniquely identify the object on a page.
Below screen shots shows an example Object repository:
Now to recognize a radio button on a page QTP had added 2 properties the
name of the radio button and the html tag for it. The name the left tree view is the logical name given by QTP for the object. This can be
changed as per the convenience of the person writing the test case. QTP only allows UNIQUE logical name under same level of hierarchy. As we see in the snapshot the two objects in Browser->Page node are “WebTable”
and “testPath”, they cannot have the same logical name. But an object
under some other node can have the same name. Now with the current
repository that we have, we can only write operation on objects which
are in the repository.
Some of the example operations are

Browser("Browser").Page("Page").WebRadioGroup ("testPath").Select "2"
cellData = Browser("Browser").Page("Page").WebTable ("WebTable").GetCellData (1,1)
Browser("Example2").Page("Page").WebEdit("testPath").Set "Test text"

b]How to use Descriptive programming?

There are two ways in which descriptive programming can be used
By creating properties collection object for the description.
By giving the description in form of the string arguments.

By creating properties collection object for the description.
To use this method you need first to create an empty description
Dim obj_Desc ‘Not necessary to declare
Set obj_Desc = Description.Create
Now we have a blank description in “obj_Desc”. Each description has 3 properties “Name”, “Value” and “Regular Expression”.
obj_Desc(“html tag”).value= “INPUT”
you use a property name for the first time the property is added to the collection and when you use it again the property is modified. By
default each property that is defined is a regular expression. Suppose if we have the following description

obj_Desc(“html tag”).value= “INPUT”
obj_Desc(“name”).value= “txt.*”
This would mean an object with html tag as INPUT and name starting with txt. Now actually that “.*” was considered as regular expression. So, if you want the property “name” not to be recognized as a regular expression then you need to set the “regularexpression” property as FALSE

obj_Desc(“html tag”).value= “INPUT”
obj_Desc(“name”).value= “txt.*”
obj_Desc(“name”).regularexpression= “txt.*”
This is how of we create a description. Now below is the way we can use it
Browser(“Browser”).Page(“Page”).WebEdit(obj_Desc).set “Test"
we say .WebEdit(obj_Desc) we define one more property for our description that was not earlier defined that is it’s a text box (because QTPs WebEdit boxes map to text boxes in a web page).

we know that we have more than 1 element with same description on the page then we must define “index” property for the that description

Consider the HTML code given below

Now the html code has two objects with same description. So distinguish between these 2 objects we will use the “index” property. Here is the
description for both the object

For 1st textbox:
obj_Desc(“html tag”).value= “INPUT”

obj_Desc(“name”).value= “txt_Name”
obj_Desc(“index”).value= “0”


For 2nd textbox:

obj_Desc(“html tag”).value= “INPUT”

obj_Desc(“name”).value= “txt_Name”

obj_Desc(“index”).value= “1”

Consider the HTML Code given below:

]We can use the same description for both the objects and still distinguish between both of them

obj_Desc(“html tag”).value= “INPUT”
obj_Desc(“name”).value= “txt_Name”

I want to refer to the textbox then I will use the inside a WebEdit
object and to refer to the radio button I will use the description
object with the WebRadioGroup object.

Browser(“Browser”).Page(“Page”).WebEdit(obj_Desc).set “Test” ‘Refers to the text box

Browser(“Browser”).Page(“Page”).WebRadioGroup(obj_Desc).set “Test” ‘Refers to the radio button

if we use WebElement object for the description then we must define the
“index” property because for a webelement the current description would
return two objects.

Hierarchy of test description:

using programmatic descriptions from a specific point within a test
object hierarchy, you must continue to use programmatic descriptions

that point onward within the same statement. If you specify a test
object by its object repository name after other objects in the
hierarchy have

been described using programmatic descriptions, QuickTest cannot identify the object.

For example, you can use Browser(Desc1).Page(Desc1).Link(desc3), since it uses programmatic descriptions throughout the entire test object hierarchy.

You can also use Browser("Index").Page(Desc1).Link(desc3), since it uses programmatic descriptions from a certain point in the description (starting

from the Page object description).

However, you cannot use Browser(Desc1).Page(Desc1).Link("Example1"), since it uses programmatic descriptions for the Browser and Page objects but

attempts to use an object repository name for the Link test object
(QuickTest tries to locate the Link object based on its name, but cannot

locate it in the repository because the parent objects were specified using programmatic descriptions).

Getting Child Object:

can use description object to get all the objects on the page that
matches that specific description. Suppose we have to check all the
checkboxes present on a web page. So we will first create an object
description for a checkboxe and then get all the checkboxes from the

Dim obj_ChkDesc

Set obj_ChkDesc=Description.Create

obj_ChkDesc(“html tag”).value = “INPUT”

obj_ChkDesc(“type”).value = “checkbox”

Dim allCheckboxes, singleCheckBox

Set allCheckboxes = Browse(“Browser”).Page(“Page”).ChildObjects(obj_ChkDesc)

For each singleCheckBox in allCheckboxes

singleCheckBox.Set “ON”


above code will check all the check boxes present on the page. To get
all the child objects we need to specify an object description i.e. we
can’t use the string arguments that will be discussed later in the 2nd
way of using the programming description.

Possible Operation on Description Object

Consider the below code for all the solutions

Dim obj_ChkDesc

Set obj_ChkDesc=Description.Create

obj_ChkDesc(“html tag”).value = “INPUT”

obj_ChkDesc(“type”).value = “checkbox”

Q: How to get the no. of description defined in a collection

A: obj_ChkDesc.Count ‘Will return 2 in our case

Q: How to remove a description from the collection

A: obj_ChkDesc.remove “html tag” ‘would delete the html tag property from the collection

Q: How do I check if property exists or not in the collection?

The answer is that it’s not possible. Because whenever we try to access
a property which is not defined its automatically added to the
collection. The only way to determine is to check its value that is
use a if statement “if obj_ChkDesc(“html tag”).value = empty then”.

Q: How to browse through all the properties of a properties collection?

A: Two ways


For each desc in obj_ChkDesc



RE = desc.regularexpression



For i=0 to obj_ChkDesc.count - 1

Name= obj_ChkDesc(i).Name

Value= obj_ChkDesc(i).Value

RE = obj_ChkDesc(i).regularexpression


2. By giving the description in form of the string arguments.

You can describe an object directly in a statement by specifying property:=value pairs describing the object instead of specifying an object’s

name. The general syntax is:

TestObject("PropertyName1:=PropertyValue1", "..." , "PropertyNameX:=PropertyValueX")

TestObject—the test object class could be WebEdit, WebRadioGroup etc….

PropertyName:=PropertyValue—the test object property and its value. Each property:=value pair should be separated by commas and quotation

Note that you can enter a variable name as the property value if you
want to find an object based on property values you retrieve during a
run session.

Consider the HTML Code given below:

Now to refer to the textbox the statement would be as given below

Browser(“Browser”).Page(“Page”).WebEdit(“Name:=txt_Name”,”html tag:=INPUT”).set “Test”

And to refer to the radio button the statement would be as given below

Browser(“Browser”).Page(“Page”).WebRadioGroup(“Name:=txt_Name”,”html tag:=INPUT”).set “Test”

If we refer to them as a web element then we will have to distinguish between the 2 using the index property

Browser(“Browser”).Page(“Page”).WebElement(“Name:=txt_Name”,”html tag:=INPUT”,”Index:=0”).set “Test” ‘ Refers to the textbox

Browser(“Browser”).Page(“Page”).WebElement(“Name:=txt_Name”,”html tag:=INPUT”,”Index:=1”).set “Test” ‘ Refers to the radio button
Back to top Go down
Descriptive Programming
Back to top 
Page 1 of 1

Permissions in this forum:You cannot reply to topics in this forum
Knowledge Share :: Testing :: Automation-
Jump to: