Pages

Monday, September 13, 2010

QTP Descriptive Programming (DP) for Web

I'm going to explain and show QTP Descriptive Programming (DP) through Google Sets site:

image (click image to enlarge it)

The goal of the present QTP tutorial is to describe:

How to get number of controls (Links, Edits, Images, etc) with QTP DP.


Let's investigate Descriptive Programming on examples.
First of all, we should understand what Descriptive Programming means:

What is QuickTest Professional Descriptive Programming (QTP DP)?


Answer: QTP DP is a run-time processing of objects which are not located in QTP Object Repository.

I've created new QTP script which starts with http://labs.google.com/sets page.
This QTP script is simple enough:

Set Desc = Description.Create()

Desc("micclass").Value = "WebEdit"

Set Edits = Browser("micclass:=Browser").Page("micclass:=Page").ChildObjects(Desc)

MsgBox "Number of Edits: " & Edits.Count

And its result is:
image

As you can see, it works correctly and returns correct number of Edits on a page.
I'm going to explain this QTP script and answer the following question:

How does QTP Descriptive Programming work?

First of all, I've created new Description object: 

Set Desc = Description.Create()

Description object contains collection of properties, which identify any UI object such as a browser, a page, a dialog, a list, a button etc.
To specify that we want identify all Edits on browser's page I use "micclass" property:

Desc("micclass").Value = "WebEdit"

Note: the "mic" prefix in "micclass" stands for "Mercury Interactive Constant".

How do you know the class name ("micclass") of object?

Use Spy for that:
clip_image005
Open QTP object Spy and check recorded properties of object.
For example, these are properties of Edit:
sclip_image007
As you can see, there is "Class Name" property and its value - "WebEdit". So, "WebEdit" is a value of Class Name of all Edits located on Web page.
Note: "Class Name" is a synonym of "micclass".

Since we created Description object for all edit boxes, we can use this description to get all specified objects ( = edit boxes).
The next step returns the collection of all child objects (i.e. edit boxes) contained within the page:

Set Links = Browser("micclass:=Browser").Page("micclass:=Page").ChildObjects(Desc)

To get the number of found objects in a returned collection, we use Count property:

MsgBox "Number of Edits: " & Links.Count

And the result is 5 found Edits on Google Sets page:
clip_image011
So, this is a mechanism of QuickTest Professional Descriptive Programming.

Also, we can use the same code to get number of others objects - Links, Images, Buttons, etc.
For that I modified QTP script:

Function GetAllSpecificControls(Page, MicClass)

Set Desc = Description.Create()

Desc("micclass").Value = MicClass

Set GetAllSpecificControls = Page.ChildObjects(Desc)

End Function

Function GetAllEdits(Page)

Set GetAllEdits = GetAllSpecificControls(Page, "WebEdit")

End Function

Function GetAllButtons(Page)

Set GetAllButtons = GetAllSpecificControls(Page, "WebButton")

End Function

Function GetAllLinks(Page)

Set GetAllLinks = GetAllSpecificControls(Page, "Link")

End Function

Function GetAllImages(Page)

Set GetAllImages = GetAllSpecificControls(Page, "Image")

End Function

Set oPage = Browser("micclass:=Browser").Page("micclass:=Page")

MsgBox "Number of Edits: " & GetAllEdits(oPage).Count

MsgBox "Number of Buttons: " & GetAllButtons(oPage).Count

MsgBox "Number of Links: " & GetAllLinks(oPage).Count

MsgBox "Number of Images: " & GetAllImages(oPage).Count

The result of this QTP script is the following:

image image image image

1 comment: