How to use Descriptive Programming

Posted by rajivkumarnandvani on February 6, 2009

How to use Descriptive Programming?

There are two ways in which descriptive programming can be used

1. By creating properties collection object for the description.

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

1. 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”

When 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


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.*”


This is how we create a description. Now below is the way we can use it

Browser(“Browser”).Page(“Page”).WebEdit(obj_Desc).set “Test”

When 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).

If 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

<–!input type=””textbox”” name=””txt_Name””–>

<–!input type=””textbox”” name=””txt_Name””–>

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:

<–!input type=””textbox”” name=””txt_Name””–>

<–!input type=””radio”” name=””txt_Name””–>

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

When 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

But 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:

When using programmatic descriptions from a specific point within a test object

hierarchy, you must continue to use programmatic descriptions

from 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


You can also use Browser(“Index”).Page(Desc1).Link(desc3), since it

uses programmatic descriptions from a certain point in the description


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

then 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).


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: