In this series of post, we'll learn in detail how to use Descriptive programming (DP) in QTP.
Before starting DP, let's understand the basics about object identification. There are two ways, QTP uses to recognize the objects present in your application.
1. Object Repository (OR)
2. Descriptive Programming (DP)
2. Descriptive Programming (DP)
What is Object Repository (OR)?
OR is the simple and default way of object identification in QTP. Object Repository is a storage place of QTP, where properties and values of every object are stored. While you record on application, all the objects you click/interact, are stored in Object Repository.
During the play back QTP use this OR to identify the object on which the action is to be performed.
What is Descriptive programming (DP)?
We'll use DP when we want to bypass OR. Descriptive programming is used when we want to perform an operation on an object that is not stored in the object repository. This way QTP won’t search for the object properties in the Object Repository, but will take it from the DP statement.
Why use Descriptive programming (DP)?
Everything looks fine while automating test using OR, then why should I use DP?
Well, there might be many valid reason to do so. Think about a situation - you want to close all opened browser automatically before you start executing your script. Here OR will not help you to identify an object as it is not possible to store all the opened browser objects into OR. Make sense?
No worries! We'll discuss the need and benefits of DP in detail later in this post. We’ll examine scenarios where OR’s advantages are outweighed by the DP.
I am not very good in vbscript. Is it mandatory to learn vbscript explicitly to write DP?
No. Not at all! Its not mandatory, but yeah.. recommended. For basic operations and starting with DP, this post will guide you.
Although, for advanced operations i.e. using COM, AOM, complex frameworks etc. vbscript knowledge is the key.
Okie guys! Now, let's start writing DP!
Types of Descriptive Programming (DP):
DP can be written in two ways..
1. Static (by provide the set of properties and values directly)
2. Dynamic (by creating description object)
- In Static method of DP, we provide the set of properties and values directly in a single line, in form of the string arguments.
object's Class Name("property name:=property value")
Exmp 1: webbutton(“Name:=Google Search”)
object's Class Name = webbutton
property name = Name
property value = Google Search
Exmp 2:- Browser(“google”).page(“google”).webbutton(“name:=Google Search”,”type:= Submit”).click
In above statement, Browser(“google”) and page(“google”) are written using OR. And webbutton(“name:=Google Search”,”type:= Submit”) is written using DP.
Please note that we can write multiple set of properties and values in any DP statement.
webbutton(“name:=Google Search”,”type:= Submit”).click
webbutton(“name:=Google Search”,”type:= Submit”,"x:=301").click
TIP: A statement can be written by combining OR and DP approach, but OR can be used only before DP. once you use DP, you can't write OR after it.
Above statement is correct because DP(webbutton(“name:=Google Search”,”type:= Submit”)) is written only after OR(Browser(“google”).page(“google”)).
Incorrect: Browser(“name:=google”).page(“title:=google”).webbutton("Google Search").click
Above statement is incorrect because DP (Browser(“name:=google”)) is used before OR.
We can get the all properties and values of object using Object Spy.
Okie!! Let me add one more point here. You can use variable also in Descriptive Programming (DP)!! Here we go...
var_name = "Google Search"
webbutton(“name:=” & var_name).click
- Object Repository (OR) and Descriptive Programming (DP) are two ways, QTP uses to recognize the objects.
- These two ways are also known as Object Identification techniques.
- Descriptive Programming (DP) can be done in two ways - Static and Dynamic.
- A statement can be a combination of both OR and DP approach
- OR approach can be used only before DP. once you use DP in a statement, you can't write OR after it.
- Properties and values of object for DP are captured using Object Spy.
- Variable also can be used for property values in DP.
In case of any queries, please post your comments.