Login Module_V7

Download Report

Transcript Login Module_V7

Slide 1

Login Module

Building the Login GUI Layer Module

1

Topics covered







Create a new test, and classify it as a reusable
action under GUI Layer.
Adding Object to Local Object Repository.
Mapping Dialogs/ Objects.
Smart Identification.
Modify and save Test Settings.

Dani Vainstein & Monika Arora Gautam

2

Before you start…


Before starting the presentation, read about the
following topics in QTP help.






Reusable-Actions
Smart identification.
Action Parameters.
Object Spy.





Test Object Properties.
Run-time Object Properties.

Object Repository.

Dani Vainstein & Monika Arora Gautam

3

Things to Remember…




The Application Under Test (AUT) uses embedded
ActiveX objects, so when you first time open QTP, make
sure to check ActiveX option from Add-in manager.
When QTP is launched, be sure only the ActiveX option
is checked in the add-in manager.

Dani Vainstein & Monika Arora Gautam

4

guiLogin Module
Automation


FR
LIB
RA

Save the current test under
name = “guiLogin” in folder
FR\RA\GL

BL
GL

RS
DOC
DAT
SETTING

guiLogin

TESTS
RES
BATCH
ENV
Dani Vainstein & Monika Arora Gautam

5

guiLogin - Introduction








We are going to create a new Test and
reusable action.
The Test name would be guiLogin, because it
handles the “Login” dialog.
The main action will also called guiLogin. It
will be a reusable action, for further tests.
The guiLogin will receive an input parameter
of string type.

Dani Vainstein & Monika Arora Gautam

6

Modifying the Test Settings - Properties Tab

Description :
The guiLogin Module Stores all the actions required for the login process
Remark : associated add-ins : ActiveX only

Dani Vainstein & Monika Arora Gautam

7

Run Tab
Run one iteration only

Save The Test
Pop up
Message box
Disable Smart Identification
During the run session

Dani Vainstein & Monika Arora Gautam

8

Reusable action






We will create Reusable Action named guiLogin and set
the Action properties.
The guiLogin module ( reusable action ) implements all
the available actions on the Dialog login screen.
The Parameter StepName will be used as an instruction
to the reusable action i.e. “SetData”, “CheckLogo” etc.

Dani Vainstein & Monika Arora Gautam

9

guiLogin Reusable-Action


From Menu  Edit  Action  Action
Properties

Dani Vainstein & Monika Arora Gautam

10

guiLogin - General Tab
Change
Action
Name

Add
Description
Mark
Reusable

Dani Vainstein & Monika Arora Gautam

11

Parameters Tab – Add StepName


Add a new Input Parameter ( Click on + )
Add
StepName
Input
Parameter

Type
String

Dani Vainstein & Monika Arora Gautam

Add
Description

Default
Leave Empty

12

Mapping The Dialog Login







The guiLogin will hold a local repository.
The advantage of the OOT (Object Oriented Testing )
methodology, I think ( and others may disagree with me
) is that by having a reusable action per-screen, you
don’t have to maintain a shared object repository.
Especially when you work within a team, it helps
sparing the locks on the shared working files.
Mapping the application objects – is very important, you
should map your application before you start to “script”

Dani Vainstein & Monika Arora Gautam

13

Adding Objects to Local Repository




Open the Flight Application from Start  All Programs
 QuickTest Professional  Sample Applications 
Flight.
Do not login, just leave the window open.

Dani Vainstein & Monika Arora Gautam

14

Adding Objects to Local Repository





Open the local object repository from
menu  Resources  Object Repository.
Or just type Ctrl+R in QTP application.
QTP will show an hand icon.

Click Add objects in toolbar
Or
Object  Add objects To Local…

Dani Vainstein & Monika Arora Gautam

15

Mapping objects
Point the title-bar of dialog

Click OK
All Objects types

Click OK

Dani Vainstein & Monika Arora Gautam

16

Naming conventions



All the objects will be added to the local repository.
Remove spaces and non-alphanumeric characters from
Object Names.




Change “Agent Name:” to “AgentName”.
Change “Static” to “Logo”.
Remove all names with : (colon ) at the end of the name.

Dani Vainstein & Monika Arora Gautam

17

Why Renaming?











Sometimes there are two blanks instead of one; between two words.
According to my experience, nobody will make a new version for
such a mistake. Their answer ( R&D ) would be
“We will fix it later”.
For QTP this is critical, as it will not identify two spaces instead of
one.
The name “Static” says nothing to you and/or your colleagues, but
with “logo” you have no doubt.
QTP sometimes gives insignificant names to objects i.e. “button_1”
or “button_2”.
It is better to change these, to more descriptive names.
Changing logical names does not effect the QTP object recognition
mechanism.

Dani Vainstein & Monika Arora Gautam

18

Naming conventions

See the logical names
Convention changes

Dani Vainstein & Monika Arora Gautam

19

CheckDialog Reusable Action






We will learn how to check different dialog
messages that share same dialog title “Flight
Reservation”.
We will create a new reusable action inside the
guiLogin module, and we will call it
“CheckDialog”.
I will explain later, the considerations of this
decision.

Dani Vainstein & Monika Arora Gautam

20

Creating a new reusable action




From Menu : Insert  Call to New Action
Type : Hold the ALT key, and type ( I + N )
From toolbar as shown below:

Call to New Action

Dani Vainstein & Monika Arora Gautam

21

Adding a new reusable action
Name : CheckDialog

Description :
Manage all dialog checkpoints
under guiLogin

Reusable Action

Location : At the end of the test

Dani Vainstein & Monika Arora Gautam

22

CheckDialog Created




Now you should have two reusable actions.
Notice the actions listbox ( left ) and the
keyword view ( right ).

Dani Vainstein & Monika Arora Gautam

23

Mapping Dialogs



Move to Expert View Action CheckDialogs.
Open the local repository : Resources  Object
Repository
Or Type CTRL+R



Or from toolbar as shown below:




Object Repository

Dani Vainstein & Monika Arora Gautam

24

Mapping Dialogs






Open the Flight Reservation application if is not opened, and click
OK.
CAUTION : always be aware, specially when adding objects, that
you have only one instance of the AUT open.
What would happen? These child objects would be added under a
new “Dialog_2” parent object and would not be recognized during
playback.

Dani Vainstein & Monika Arora Gautam

25

Map Flight Reservations dialogs


Click OK to get Flight Reservations dialog.

Dani Vainstein & Monika Arora Gautam

26

Naming Conventions





Remove space between “Flight Reservation” and change it
to “FlightReservation".
Change the “static” to “Icon”.
Change “Please enter agent name” to “Msg”.

Dani Vainstein & Monika Arora Gautam

27

Mapping other dialogs?
Return to the same process and add all the objects/
dialog w.r.t. Logging in to Flight Application.
Try to map the following dialogs :







Why these are not added to the repository?

Dani Vainstein & Monika Arora Gautam

28

Mapping dialogs









That’s because all the messages has the same title “Flight
Reservations”.
For QTP all these dialogs are same.
Is it good? Of course! Otherwise you will have to map
every single message in your AUT.
But, what about the message displayed in the dialog?
The text is not the same.
This you will learn through the Object Identification
feature and the Object Spy in next upcoming slides.

Dani Vainstein & Monika Arora Gautam

29

Understanding object identification



Select the object Spy. From menu : Tools  Object Spy
Or from toolbar as shown below.

Object Spy

Dani Vainstein & Monika Arora Gautam

30

Object Spy




Dani Vainstein & Monika Arora Gautam

Click on the finger point and select the
message in the dialog.

Save a screenshot of the spy in “My
Pictures” and do same for this dialog
and compare properties for both the
messages.

31

Object Spy - Msg

Dani Vainstein & Monika Arora Gautam

32

Comparing



The properties are quite different. The key of the
mystery is the property window id, they are the
same = 65535.

Dani Vainstein & Monika Arora Gautam

33

Understanding The Object Identification


Another look to the repository will show us that the
object is identified by QTP using the native class and
window id, those properties have the same values

 You will see further,

why, this is a very big
advantage.

Dani Vainstein & Monika Arora Gautam

34

Highlight the Dialogs Messages in the
Application




Select the Msg object in the repository and Click the
“highlight in application” button while one of the popups is displayed, see what happens.
One by one do the same for other pop-ups, and see what
happens.

Highlight in application

Dani Vainstein & Monika Arora Gautam

35

Conclusion






Logically, QTP identifies all the messages inside
the same dialog as the only one message.
Imagine you have to map all the different
messages for same instance of dialog in your
AUT. It’s lot of job.
However QTP takes care of it by its Object
Identification and Spy feature.

Dani Vainstein & Monika Arora Gautam

36

Saving the Test



Save The Test.
Every Time you see * near the test name, it means that
the test is not saved. Always remember to save your
work.
Not Saved

Dani Vainstein & Monika Arora Gautam

37

Summary






We have created a new reusable action
guiLogin/guiLogin module
We a created a second new reusable action
guiLogin/CheckDialog
In this session we’ve learned how to map the Login
window and messages dialogs.

Dani Vainstein & Monika Arora Gautam

38

Special Thanks To


Bharathi Babu, India, Pune.



Ayyappa Koppolu, India, Pune.



Paul Grossman, USA, Chicago.



Sumit Singhal, India, Bangalore.



Sanjeev Mathur, India, Noida.



Manasa VN, India, Bangalore.



Prakash Kumar, India, Pune.



Richi Sharma, USA, New Jersey.



Janardhan Kalvakuntla, USA, New England.



Indlamudi Rajesh, India, Mumbai.

 Vainstein
Joydeep
Das,Arora
India,
Hyderabad.
Dani
& Monika
Gautam

39

Make sure to visit us for:






Tutorials
Articles
Projects
And much more

@
www.AdvancedQTP.com

Dani Vainstein & Monika Arora Gautam

40


Slide 2

Login Module

Building the Login GUI Layer Module

1

Topics covered







Create a new test, and classify it as a reusable
action under GUI Layer.
Adding Object to Local Object Repository.
Mapping Dialogs/ Objects.
Smart Identification.
Modify and save Test Settings.

Dani Vainstein & Monika Arora Gautam

2

Before you start…


Before starting the presentation, read about the
following topics in QTP help.






Reusable-Actions
Smart identification.
Action Parameters.
Object Spy.





Test Object Properties.
Run-time Object Properties.

Object Repository.

Dani Vainstein & Monika Arora Gautam

3

Things to Remember…




The Application Under Test (AUT) uses embedded
ActiveX objects, so when you first time open QTP, make
sure to check ActiveX option from Add-in manager.
When QTP is launched, be sure only the ActiveX option
is checked in the add-in manager.

Dani Vainstein & Monika Arora Gautam

4

guiLogin Module
Automation


FR
LIB
RA

Save the current test under
name = “guiLogin” in folder
FR\RA\GL

BL
GL

RS
DOC
DAT
SETTING

guiLogin

TESTS
RES
BATCH
ENV
Dani Vainstein & Monika Arora Gautam

5

guiLogin - Introduction








We are going to create a new Test and
reusable action.
The Test name would be guiLogin, because it
handles the “Login” dialog.
The main action will also called guiLogin. It
will be a reusable action, for further tests.
The guiLogin will receive an input parameter
of string type.

Dani Vainstein & Monika Arora Gautam

6

Modifying the Test Settings - Properties Tab

Description :
The guiLogin Module Stores all the actions required for the login process
Remark : associated add-ins : ActiveX only

Dani Vainstein & Monika Arora Gautam

7

Run Tab
Run one iteration only

Save The Test
Pop up
Message box
Disable Smart Identification
During the run session

Dani Vainstein & Monika Arora Gautam

8

Reusable action






We will create Reusable Action named guiLogin and set
the Action properties.
The guiLogin module ( reusable action ) implements all
the available actions on the Dialog login screen.
The Parameter StepName will be used as an instruction
to the reusable action i.e. “SetData”, “CheckLogo” etc.

Dani Vainstein & Monika Arora Gautam

9

guiLogin Reusable-Action


From Menu  Edit  Action  Action
Properties

Dani Vainstein & Monika Arora Gautam

10

guiLogin - General Tab
Change
Action
Name

Add
Description
Mark
Reusable

Dani Vainstein & Monika Arora Gautam

11

Parameters Tab – Add StepName


Add a new Input Parameter ( Click on + )
Add
StepName
Input
Parameter

Type
String

Dani Vainstein & Monika Arora Gautam

Add
Description

Default
Leave Empty

12

Mapping The Dialog Login







The guiLogin will hold a local repository.
The advantage of the OOT (Object Oriented Testing )
methodology, I think ( and others may disagree with me
) is that by having a reusable action per-screen, you
don’t have to maintain a shared object repository.
Especially when you work within a team, it helps
sparing the locks on the shared working files.
Mapping the application objects – is very important, you
should map your application before you start to “script”

Dani Vainstein & Monika Arora Gautam

13

Adding Objects to Local Repository




Open the Flight Application from Start  All Programs
 QuickTest Professional  Sample Applications 
Flight.
Do not login, just leave the window open.

Dani Vainstein & Monika Arora Gautam

14

Adding Objects to Local Repository





Open the local object repository from
menu  Resources  Object Repository.
Or just type Ctrl+R in QTP application.
QTP will show an hand icon.

Click Add objects in toolbar
Or
Object  Add objects To Local…

Dani Vainstein & Monika Arora Gautam

15

Mapping objects
Point the title-bar of dialog

Click OK
All Objects types

Click OK

Dani Vainstein & Monika Arora Gautam

16

Naming conventions



All the objects will be added to the local repository.
Remove spaces and non-alphanumeric characters from
Object Names.




Change “Agent Name:” to “AgentName”.
Change “Static” to “Logo”.
Remove all names with : (colon ) at the end of the name.

Dani Vainstein & Monika Arora Gautam

17

Why Renaming?











Sometimes there are two blanks instead of one; between two words.
According to my experience, nobody will make a new version for
such a mistake. Their answer ( R&D ) would be
“We will fix it later”.
For QTP this is critical, as it will not identify two spaces instead of
one.
The name “Static” says nothing to you and/or your colleagues, but
with “logo” you have no doubt.
QTP sometimes gives insignificant names to objects i.e. “button_1”
or “button_2”.
It is better to change these, to more descriptive names.
Changing logical names does not effect the QTP object recognition
mechanism.

Dani Vainstein & Monika Arora Gautam

18

Naming conventions

See the logical names
Convention changes

Dani Vainstein & Monika Arora Gautam

19

CheckDialog Reusable Action






We will learn how to check different dialog
messages that share same dialog title “Flight
Reservation”.
We will create a new reusable action inside the
guiLogin module, and we will call it
“CheckDialog”.
I will explain later, the considerations of this
decision.

Dani Vainstein & Monika Arora Gautam

20

Creating a new reusable action




From Menu : Insert  Call to New Action
Type : Hold the ALT key, and type ( I + N )
From toolbar as shown below:

Call to New Action

Dani Vainstein & Monika Arora Gautam

21

Adding a new reusable action
Name : CheckDialog

Description :
Manage all dialog checkpoints
under guiLogin

Reusable Action

Location : At the end of the test

Dani Vainstein & Monika Arora Gautam

22

CheckDialog Created




Now you should have two reusable actions.
Notice the actions listbox ( left ) and the
keyword view ( right ).

Dani Vainstein & Monika Arora Gautam

23

Mapping Dialogs



Move to Expert View Action CheckDialogs.
Open the local repository : Resources  Object
Repository
Or Type CTRL+R



Or from toolbar as shown below:




Object Repository

Dani Vainstein & Monika Arora Gautam

24

Mapping Dialogs






Open the Flight Reservation application if is not opened, and click
OK.
CAUTION : always be aware, specially when adding objects, that
you have only one instance of the AUT open.
What would happen? These child objects would be added under a
new “Dialog_2” parent object and would not be recognized during
playback.

Dani Vainstein & Monika Arora Gautam

25

Map Flight Reservations dialogs


Click OK to get Flight Reservations dialog.

Dani Vainstein & Monika Arora Gautam

26

Naming Conventions





Remove space between “Flight Reservation” and change it
to “FlightReservation".
Change the “static” to “Icon”.
Change “Please enter agent name” to “Msg”.

Dani Vainstein & Monika Arora Gautam

27

Mapping other dialogs?
Return to the same process and add all the objects/
dialog w.r.t. Logging in to Flight Application.
Try to map the following dialogs :







Why these are not added to the repository?

Dani Vainstein & Monika Arora Gautam

28

Mapping dialogs









That’s because all the messages has the same title “Flight
Reservations”.
For QTP all these dialogs are same.
Is it good? Of course! Otherwise you will have to map
every single message in your AUT.
But, what about the message displayed in the dialog?
The text is not the same.
This you will learn through the Object Identification
feature and the Object Spy in next upcoming slides.

Dani Vainstein & Monika Arora Gautam

29

Understanding object identification



Select the object Spy. From menu : Tools  Object Spy
Or from toolbar as shown below.

Object Spy

Dani Vainstein & Monika Arora Gautam

30

Object Spy




Dani Vainstein & Monika Arora Gautam

Click on the finger point and select the
message in the dialog.

Save a screenshot of the spy in “My
Pictures” and do same for this dialog
and compare properties for both the
messages.

31

Object Spy - Msg

Dani Vainstein & Monika Arora Gautam

32

Comparing



The properties are quite different. The key of the
mystery is the property window id, they are the
same = 65535.

Dani Vainstein & Monika Arora Gautam

33

Understanding The Object Identification


Another look to the repository will show us that the
object is identified by QTP using the native class and
window id, those properties have the same values

 You will see further,

why, this is a very big
advantage.

Dani Vainstein & Monika Arora Gautam

34

Highlight the Dialogs Messages in the
Application




Select the Msg object in the repository and Click the
“highlight in application” button while one of the popups is displayed, see what happens.
One by one do the same for other pop-ups, and see what
happens.

Highlight in application

Dani Vainstein & Monika Arora Gautam

35

Conclusion






Logically, QTP identifies all the messages inside
the same dialog as the only one message.
Imagine you have to map all the different
messages for same instance of dialog in your
AUT. It’s lot of job.
However QTP takes care of it by its Object
Identification and Spy feature.

Dani Vainstein & Monika Arora Gautam

36

Saving the Test



Save The Test.
Every Time you see * near the test name, it means that
the test is not saved. Always remember to save your
work.
Not Saved

Dani Vainstein & Monika Arora Gautam

37

Summary






We have created a new reusable action
guiLogin/guiLogin module
We a created a second new reusable action
guiLogin/CheckDialog
In this session we’ve learned how to map the Login
window and messages dialogs.

Dani Vainstein & Monika Arora Gautam

38

Special Thanks To


Bharathi Babu, India, Pune.



Ayyappa Koppolu, India, Pune.



Paul Grossman, USA, Chicago.



Sumit Singhal, India, Bangalore.



Sanjeev Mathur, India, Noida.



Manasa VN, India, Bangalore.



Prakash Kumar, India, Pune.



Richi Sharma, USA, New Jersey.



Janardhan Kalvakuntla, USA, New England.



Indlamudi Rajesh, India, Mumbai.

 Vainstein
Joydeep
Das,Arora
India,
Hyderabad.
Dani
& Monika
Gautam

39

Make sure to visit us for:






Tutorials
Articles
Projects
And much more

@
www.AdvancedQTP.com

Dani Vainstein & Monika Arora Gautam

40


Slide 3

Login Module

Building the Login GUI Layer Module

1

Topics covered







Create a new test, and classify it as a reusable
action under GUI Layer.
Adding Object to Local Object Repository.
Mapping Dialogs/ Objects.
Smart Identification.
Modify and save Test Settings.

Dani Vainstein & Monika Arora Gautam

2

Before you start…


Before starting the presentation, read about the
following topics in QTP help.






Reusable-Actions
Smart identification.
Action Parameters.
Object Spy.





Test Object Properties.
Run-time Object Properties.

Object Repository.

Dani Vainstein & Monika Arora Gautam

3

Things to Remember…




The Application Under Test (AUT) uses embedded
ActiveX objects, so when you first time open QTP, make
sure to check ActiveX option from Add-in manager.
When QTP is launched, be sure only the ActiveX option
is checked in the add-in manager.

Dani Vainstein & Monika Arora Gautam

4

guiLogin Module
Automation


FR
LIB
RA

Save the current test under
name = “guiLogin” in folder
FR\RA\GL

BL
GL

RS
DOC
DAT
SETTING

guiLogin

TESTS
RES
BATCH
ENV
Dani Vainstein & Monika Arora Gautam

5

guiLogin - Introduction








We are going to create a new Test and
reusable action.
The Test name would be guiLogin, because it
handles the “Login” dialog.
The main action will also called guiLogin. It
will be a reusable action, for further tests.
The guiLogin will receive an input parameter
of string type.

Dani Vainstein & Monika Arora Gautam

6

Modifying the Test Settings - Properties Tab

Description :
The guiLogin Module Stores all the actions required for the login process
Remark : associated add-ins : ActiveX only

Dani Vainstein & Monika Arora Gautam

7

Run Tab
Run one iteration only

Save The Test
Pop up
Message box
Disable Smart Identification
During the run session

Dani Vainstein & Monika Arora Gautam

8

Reusable action






We will create Reusable Action named guiLogin and set
the Action properties.
The guiLogin module ( reusable action ) implements all
the available actions on the Dialog login screen.
The Parameter StepName will be used as an instruction
to the reusable action i.e. “SetData”, “CheckLogo” etc.

Dani Vainstein & Monika Arora Gautam

9

guiLogin Reusable-Action


From Menu  Edit  Action  Action
Properties

Dani Vainstein & Monika Arora Gautam

10

guiLogin - General Tab
Change
Action
Name

Add
Description
Mark
Reusable

Dani Vainstein & Monika Arora Gautam

11

Parameters Tab – Add StepName


Add a new Input Parameter ( Click on + )
Add
StepName
Input
Parameter

Type
String

Dani Vainstein & Monika Arora Gautam

Add
Description

Default
Leave Empty

12

Mapping The Dialog Login







The guiLogin will hold a local repository.
The advantage of the OOT (Object Oriented Testing )
methodology, I think ( and others may disagree with me
) is that by having a reusable action per-screen, you
don’t have to maintain a shared object repository.
Especially when you work within a team, it helps
sparing the locks on the shared working files.
Mapping the application objects – is very important, you
should map your application before you start to “script”

Dani Vainstein & Monika Arora Gautam

13

Adding Objects to Local Repository




Open the Flight Application from Start  All Programs
 QuickTest Professional  Sample Applications 
Flight.
Do not login, just leave the window open.

Dani Vainstein & Monika Arora Gautam

14

Adding Objects to Local Repository





Open the local object repository from
menu  Resources  Object Repository.
Or just type Ctrl+R in QTP application.
QTP will show an hand icon.

Click Add objects in toolbar
Or
Object  Add objects To Local…

Dani Vainstein & Monika Arora Gautam

15

Mapping objects
Point the title-bar of dialog

Click OK
All Objects types

Click OK

Dani Vainstein & Monika Arora Gautam

16

Naming conventions



All the objects will be added to the local repository.
Remove spaces and non-alphanumeric characters from
Object Names.




Change “Agent Name:” to “AgentName”.
Change “Static” to “Logo”.
Remove all names with : (colon ) at the end of the name.

Dani Vainstein & Monika Arora Gautam

17

Why Renaming?











Sometimes there are two blanks instead of one; between two words.
According to my experience, nobody will make a new version for
such a mistake. Their answer ( R&D ) would be
“We will fix it later”.
For QTP this is critical, as it will not identify two spaces instead of
one.
The name “Static” says nothing to you and/or your colleagues, but
with “logo” you have no doubt.
QTP sometimes gives insignificant names to objects i.e. “button_1”
or “button_2”.
It is better to change these, to more descriptive names.
Changing logical names does not effect the QTP object recognition
mechanism.

Dani Vainstein & Monika Arora Gautam

18

Naming conventions

See the logical names
Convention changes

Dani Vainstein & Monika Arora Gautam

19

CheckDialog Reusable Action






We will learn how to check different dialog
messages that share same dialog title “Flight
Reservation”.
We will create a new reusable action inside the
guiLogin module, and we will call it
“CheckDialog”.
I will explain later, the considerations of this
decision.

Dani Vainstein & Monika Arora Gautam

20

Creating a new reusable action




From Menu : Insert  Call to New Action
Type : Hold the ALT key, and type ( I + N )
From toolbar as shown below:

Call to New Action

Dani Vainstein & Monika Arora Gautam

21

Adding a new reusable action
Name : CheckDialog

Description :
Manage all dialog checkpoints
under guiLogin

Reusable Action

Location : At the end of the test

Dani Vainstein & Monika Arora Gautam

22

CheckDialog Created




Now you should have two reusable actions.
Notice the actions listbox ( left ) and the
keyword view ( right ).

Dani Vainstein & Monika Arora Gautam

23

Mapping Dialogs



Move to Expert View Action CheckDialogs.
Open the local repository : Resources  Object
Repository
Or Type CTRL+R



Or from toolbar as shown below:




Object Repository

Dani Vainstein & Monika Arora Gautam

24

Mapping Dialogs






Open the Flight Reservation application if is not opened, and click
OK.
CAUTION : always be aware, specially when adding objects, that
you have only one instance of the AUT open.
What would happen? These child objects would be added under a
new “Dialog_2” parent object and would not be recognized during
playback.

Dani Vainstein & Monika Arora Gautam

25

Map Flight Reservations dialogs


Click OK to get Flight Reservations dialog.

Dani Vainstein & Monika Arora Gautam

26

Naming Conventions





Remove space between “Flight Reservation” and change it
to “FlightReservation".
Change the “static” to “Icon”.
Change “Please enter agent name” to “Msg”.

Dani Vainstein & Monika Arora Gautam

27

Mapping other dialogs?
Return to the same process and add all the objects/
dialog w.r.t. Logging in to Flight Application.
Try to map the following dialogs :







Why these are not added to the repository?

Dani Vainstein & Monika Arora Gautam

28

Mapping dialogs









That’s because all the messages has the same title “Flight
Reservations”.
For QTP all these dialogs are same.
Is it good? Of course! Otherwise you will have to map
every single message in your AUT.
But, what about the message displayed in the dialog?
The text is not the same.
This you will learn through the Object Identification
feature and the Object Spy in next upcoming slides.

Dani Vainstein & Monika Arora Gautam

29

Understanding object identification



Select the object Spy. From menu : Tools  Object Spy
Or from toolbar as shown below.

Object Spy

Dani Vainstein & Monika Arora Gautam

30

Object Spy




Dani Vainstein & Monika Arora Gautam

Click on the finger point and select the
message in the dialog.

Save a screenshot of the spy in “My
Pictures” and do same for this dialog
and compare properties for both the
messages.

31

Object Spy - Msg

Dani Vainstein & Monika Arora Gautam

32

Comparing



The properties are quite different. The key of the
mystery is the property window id, they are the
same = 65535.

Dani Vainstein & Monika Arora Gautam

33

Understanding The Object Identification


Another look to the repository will show us that the
object is identified by QTP using the native class and
window id, those properties have the same values

 You will see further,

why, this is a very big
advantage.

Dani Vainstein & Monika Arora Gautam

34

Highlight the Dialogs Messages in the
Application




Select the Msg object in the repository and Click the
“highlight in application” button while one of the popups is displayed, see what happens.
One by one do the same for other pop-ups, and see what
happens.

Highlight in application

Dani Vainstein & Monika Arora Gautam

35

Conclusion






Logically, QTP identifies all the messages inside
the same dialog as the only one message.
Imagine you have to map all the different
messages for same instance of dialog in your
AUT. It’s lot of job.
However QTP takes care of it by its Object
Identification and Spy feature.

Dani Vainstein & Monika Arora Gautam

36

Saving the Test



Save The Test.
Every Time you see * near the test name, it means that
the test is not saved. Always remember to save your
work.
Not Saved

Dani Vainstein & Monika Arora Gautam

37

Summary






We have created a new reusable action
guiLogin/guiLogin module
We a created a second new reusable action
guiLogin/CheckDialog
In this session we’ve learned how to map the Login
window and messages dialogs.

Dani Vainstein & Monika Arora Gautam

38

Special Thanks To


Bharathi Babu, India, Pune.



Ayyappa Koppolu, India, Pune.



Paul Grossman, USA, Chicago.



Sumit Singhal, India, Bangalore.



Sanjeev Mathur, India, Noida.



Manasa VN, India, Bangalore.



Prakash Kumar, India, Pune.



Richi Sharma, USA, New Jersey.



Janardhan Kalvakuntla, USA, New England.



Indlamudi Rajesh, India, Mumbai.

 Vainstein
Joydeep
Das,Arora
India,
Hyderabad.
Dani
& Monika
Gautam

39

Make sure to visit us for:






Tutorials
Articles
Projects
And much more

@
www.AdvancedQTP.com

Dani Vainstein & Monika Arora Gautam

40


Slide 4

Login Module

Building the Login GUI Layer Module

1

Topics covered







Create a new test, and classify it as a reusable
action under GUI Layer.
Adding Object to Local Object Repository.
Mapping Dialogs/ Objects.
Smart Identification.
Modify and save Test Settings.

Dani Vainstein & Monika Arora Gautam

2

Before you start…


Before starting the presentation, read about the
following topics in QTP help.






Reusable-Actions
Smart identification.
Action Parameters.
Object Spy.





Test Object Properties.
Run-time Object Properties.

Object Repository.

Dani Vainstein & Monika Arora Gautam

3

Things to Remember…




The Application Under Test (AUT) uses embedded
ActiveX objects, so when you first time open QTP, make
sure to check ActiveX option from Add-in manager.
When QTP is launched, be sure only the ActiveX option
is checked in the add-in manager.

Dani Vainstein & Monika Arora Gautam

4

guiLogin Module
Automation


FR
LIB
RA

Save the current test under
name = “guiLogin” in folder
FR\RA\GL

BL
GL

RS
DOC
DAT
SETTING

guiLogin

TESTS
RES
BATCH
ENV
Dani Vainstein & Monika Arora Gautam

5

guiLogin - Introduction








We are going to create a new Test and
reusable action.
The Test name would be guiLogin, because it
handles the “Login” dialog.
The main action will also called guiLogin. It
will be a reusable action, for further tests.
The guiLogin will receive an input parameter
of string type.

Dani Vainstein & Monika Arora Gautam

6

Modifying the Test Settings - Properties Tab

Description :
The guiLogin Module Stores all the actions required for the login process
Remark : associated add-ins : ActiveX only

Dani Vainstein & Monika Arora Gautam

7

Run Tab
Run one iteration only

Save The Test
Pop up
Message box
Disable Smart Identification
During the run session

Dani Vainstein & Monika Arora Gautam

8

Reusable action






We will create Reusable Action named guiLogin and set
the Action properties.
The guiLogin module ( reusable action ) implements all
the available actions on the Dialog login screen.
The Parameter StepName will be used as an instruction
to the reusable action i.e. “SetData”, “CheckLogo” etc.

Dani Vainstein & Monika Arora Gautam

9

guiLogin Reusable-Action


From Menu  Edit  Action  Action
Properties

Dani Vainstein & Monika Arora Gautam

10

guiLogin - General Tab
Change
Action
Name

Add
Description
Mark
Reusable

Dani Vainstein & Monika Arora Gautam

11

Parameters Tab – Add StepName


Add a new Input Parameter ( Click on + )
Add
StepName
Input
Parameter

Type
String

Dani Vainstein & Monika Arora Gautam

Add
Description

Default
Leave Empty

12

Mapping The Dialog Login







The guiLogin will hold a local repository.
The advantage of the OOT (Object Oriented Testing )
methodology, I think ( and others may disagree with me
) is that by having a reusable action per-screen, you
don’t have to maintain a shared object repository.
Especially when you work within a team, it helps
sparing the locks on the shared working files.
Mapping the application objects – is very important, you
should map your application before you start to “script”

Dani Vainstein & Monika Arora Gautam

13

Adding Objects to Local Repository




Open the Flight Application from Start  All Programs
 QuickTest Professional  Sample Applications 
Flight.
Do not login, just leave the window open.

Dani Vainstein & Monika Arora Gautam

14

Adding Objects to Local Repository





Open the local object repository from
menu  Resources  Object Repository.
Or just type Ctrl+R in QTP application.
QTP will show an hand icon.

Click Add objects in toolbar
Or
Object  Add objects To Local…

Dani Vainstein & Monika Arora Gautam

15

Mapping objects
Point the title-bar of dialog

Click OK
All Objects types

Click OK

Dani Vainstein & Monika Arora Gautam

16

Naming conventions



All the objects will be added to the local repository.
Remove spaces and non-alphanumeric characters from
Object Names.




Change “Agent Name:” to “AgentName”.
Change “Static” to “Logo”.
Remove all names with : (colon ) at the end of the name.

Dani Vainstein & Monika Arora Gautam

17

Why Renaming?











Sometimes there are two blanks instead of one; between two words.
According to my experience, nobody will make a new version for
such a mistake. Their answer ( R&D ) would be
“We will fix it later”.
For QTP this is critical, as it will not identify two spaces instead of
one.
The name “Static” says nothing to you and/or your colleagues, but
with “logo” you have no doubt.
QTP sometimes gives insignificant names to objects i.e. “button_1”
or “button_2”.
It is better to change these, to more descriptive names.
Changing logical names does not effect the QTP object recognition
mechanism.

Dani Vainstein & Monika Arora Gautam

18

Naming conventions

See the logical names
Convention changes

Dani Vainstein & Monika Arora Gautam

19

CheckDialog Reusable Action






We will learn how to check different dialog
messages that share same dialog title “Flight
Reservation”.
We will create a new reusable action inside the
guiLogin module, and we will call it
“CheckDialog”.
I will explain later, the considerations of this
decision.

Dani Vainstein & Monika Arora Gautam

20

Creating a new reusable action




From Menu : Insert  Call to New Action
Type : Hold the ALT key, and type ( I + N )
From toolbar as shown below:

Call to New Action

Dani Vainstein & Monika Arora Gautam

21

Adding a new reusable action
Name : CheckDialog

Description :
Manage all dialog checkpoints
under guiLogin

Reusable Action

Location : At the end of the test

Dani Vainstein & Monika Arora Gautam

22

CheckDialog Created




Now you should have two reusable actions.
Notice the actions listbox ( left ) and the
keyword view ( right ).

Dani Vainstein & Monika Arora Gautam

23

Mapping Dialogs



Move to Expert View Action CheckDialogs.
Open the local repository : Resources  Object
Repository
Or Type CTRL+R



Or from toolbar as shown below:




Object Repository

Dani Vainstein & Monika Arora Gautam

24

Mapping Dialogs






Open the Flight Reservation application if is not opened, and click
OK.
CAUTION : always be aware, specially when adding objects, that
you have only one instance of the AUT open.
What would happen? These child objects would be added under a
new “Dialog_2” parent object and would not be recognized during
playback.

Dani Vainstein & Monika Arora Gautam

25

Map Flight Reservations dialogs


Click OK to get Flight Reservations dialog.

Dani Vainstein & Monika Arora Gautam

26

Naming Conventions





Remove space between “Flight Reservation” and change it
to “FlightReservation".
Change the “static” to “Icon”.
Change “Please enter agent name” to “Msg”.

Dani Vainstein & Monika Arora Gautam

27

Mapping other dialogs?
Return to the same process and add all the objects/
dialog w.r.t. Logging in to Flight Application.
Try to map the following dialogs :







Why these are not added to the repository?

Dani Vainstein & Monika Arora Gautam

28

Mapping dialogs









That’s because all the messages has the same title “Flight
Reservations”.
For QTP all these dialogs are same.
Is it good? Of course! Otherwise you will have to map
every single message in your AUT.
But, what about the message displayed in the dialog?
The text is not the same.
This you will learn through the Object Identification
feature and the Object Spy in next upcoming slides.

Dani Vainstein & Monika Arora Gautam

29

Understanding object identification



Select the object Spy. From menu : Tools  Object Spy
Or from toolbar as shown below.

Object Spy

Dani Vainstein & Monika Arora Gautam

30

Object Spy




Dani Vainstein & Monika Arora Gautam

Click on the finger point and select the
message in the dialog.

Save a screenshot of the spy in “My
Pictures” and do same for this dialog
and compare properties for both the
messages.

31

Object Spy - Msg

Dani Vainstein & Monika Arora Gautam

32

Comparing



The properties are quite different. The key of the
mystery is the property window id, they are the
same = 65535.

Dani Vainstein & Monika Arora Gautam

33

Understanding The Object Identification


Another look to the repository will show us that the
object is identified by QTP using the native class and
window id, those properties have the same values

 You will see further,

why, this is a very big
advantage.

Dani Vainstein & Monika Arora Gautam

34

Highlight the Dialogs Messages in the
Application




Select the Msg object in the repository and Click the
“highlight in application” button while one of the popups is displayed, see what happens.
One by one do the same for other pop-ups, and see what
happens.

Highlight in application

Dani Vainstein & Monika Arora Gautam

35

Conclusion






Logically, QTP identifies all the messages inside
the same dialog as the only one message.
Imagine you have to map all the different
messages for same instance of dialog in your
AUT. It’s lot of job.
However QTP takes care of it by its Object
Identification and Spy feature.

Dani Vainstein & Monika Arora Gautam

36

Saving the Test



Save The Test.
Every Time you see * near the test name, it means that
the test is not saved. Always remember to save your
work.
Not Saved

Dani Vainstein & Monika Arora Gautam

37

Summary






We have created a new reusable action
guiLogin/guiLogin module
We a created a second new reusable action
guiLogin/CheckDialog
In this session we’ve learned how to map the Login
window and messages dialogs.

Dani Vainstein & Monika Arora Gautam

38

Special Thanks To


Bharathi Babu, India, Pune.



Ayyappa Koppolu, India, Pune.



Paul Grossman, USA, Chicago.



Sumit Singhal, India, Bangalore.



Sanjeev Mathur, India, Noida.



Manasa VN, India, Bangalore.



Prakash Kumar, India, Pune.



Richi Sharma, USA, New Jersey.



Janardhan Kalvakuntla, USA, New England.



Indlamudi Rajesh, India, Mumbai.

 Vainstein
Joydeep
Das,Arora
India,
Hyderabad.
Dani
& Monika
Gautam

39

Make sure to visit us for:






Tutorials
Articles
Projects
And much more

@
www.AdvancedQTP.com

Dani Vainstein & Monika Arora Gautam

40


Slide 5

Login Module

Building the Login GUI Layer Module

1

Topics covered







Create a new test, and classify it as a reusable
action under GUI Layer.
Adding Object to Local Object Repository.
Mapping Dialogs/ Objects.
Smart Identification.
Modify and save Test Settings.

Dani Vainstein & Monika Arora Gautam

2

Before you start…


Before starting the presentation, read about the
following topics in QTP help.






Reusable-Actions
Smart identification.
Action Parameters.
Object Spy.





Test Object Properties.
Run-time Object Properties.

Object Repository.

Dani Vainstein & Monika Arora Gautam

3

Things to Remember…




The Application Under Test (AUT) uses embedded
ActiveX objects, so when you first time open QTP, make
sure to check ActiveX option from Add-in manager.
When QTP is launched, be sure only the ActiveX option
is checked in the add-in manager.

Dani Vainstein & Monika Arora Gautam

4

guiLogin Module
Automation


FR
LIB
RA

Save the current test under
name = “guiLogin” in folder
FR\RA\GL

BL
GL

RS
DOC
DAT
SETTING

guiLogin

TESTS
RES
BATCH
ENV
Dani Vainstein & Monika Arora Gautam

5

guiLogin - Introduction








We are going to create a new Test and
reusable action.
The Test name would be guiLogin, because it
handles the “Login” dialog.
The main action will also called guiLogin. It
will be a reusable action, for further tests.
The guiLogin will receive an input parameter
of string type.

Dani Vainstein & Monika Arora Gautam

6

Modifying the Test Settings - Properties Tab

Description :
The guiLogin Module Stores all the actions required for the login process
Remark : associated add-ins : ActiveX only

Dani Vainstein & Monika Arora Gautam

7

Run Tab
Run one iteration only

Save The Test
Pop up
Message box
Disable Smart Identification
During the run session

Dani Vainstein & Monika Arora Gautam

8

Reusable action






We will create Reusable Action named guiLogin and set
the Action properties.
The guiLogin module ( reusable action ) implements all
the available actions on the Dialog login screen.
The Parameter StepName will be used as an instruction
to the reusable action i.e. “SetData”, “CheckLogo” etc.

Dani Vainstein & Monika Arora Gautam

9

guiLogin Reusable-Action


From Menu  Edit  Action  Action
Properties

Dani Vainstein & Monika Arora Gautam

10

guiLogin - General Tab
Change
Action
Name

Add
Description
Mark
Reusable

Dani Vainstein & Monika Arora Gautam

11

Parameters Tab – Add StepName


Add a new Input Parameter ( Click on + )
Add
StepName
Input
Parameter

Type
String

Dani Vainstein & Monika Arora Gautam

Add
Description

Default
Leave Empty

12

Mapping The Dialog Login







The guiLogin will hold a local repository.
The advantage of the OOT (Object Oriented Testing )
methodology, I think ( and others may disagree with me
) is that by having a reusable action per-screen, you
don’t have to maintain a shared object repository.
Especially when you work within a team, it helps
sparing the locks on the shared working files.
Mapping the application objects – is very important, you
should map your application before you start to “script”

Dani Vainstein & Monika Arora Gautam

13

Adding Objects to Local Repository




Open the Flight Application from Start  All Programs
 QuickTest Professional  Sample Applications 
Flight.
Do not login, just leave the window open.

Dani Vainstein & Monika Arora Gautam

14

Adding Objects to Local Repository





Open the local object repository from
menu  Resources  Object Repository.
Or just type Ctrl+R in QTP application.
QTP will show an hand icon.

Click Add objects in toolbar
Or
Object  Add objects To Local…

Dani Vainstein & Monika Arora Gautam

15

Mapping objects
Point the title-bar of dialog

Click OK
All Objects types

Click OK

Dani Vainstein & Monika Arora Gautam

16

Naming conventions



All the objects will be added to the local repository.
Remove spaces and non-alphanumeric characters from
Object Names.




Change “Agent Name:” to “AgentName”.
Change “Static” to “Logo”.
Remove all names with : (colon ) at the end of the name.

Dani Vainstein & Monika Arora Gautam

17

Why Renaming?











Sometimes there are two blanks instead of one; between two words.
According to my experience, nobody will make a new version for
such a mistake. Their answer ( R&D ) would be
“We will fix it later”.
For QTP this is critical, as it will not identify two spaces instead of
one.
The name “Static” says nothing to you and/or your colleagues, but
with “logo” you have no doubt.
QTP sometimes gives insignificant names to objects i.e. “button_1”
or “button_2”.
It is better to change these, to more descriptive names.
Changing logical names does not effect the QTP object recognition
mechanism.

Dani Vainstein & Monika Arora Gautam

18

Naming conventions

See the logical names
Convention changes

Dani Vainstein & Monika Arora Gautam

19

CheckDialog Reusable Action






We will learn how to check different dialog
messages that share same dialog title “Flight
Reservation”.
We will create a new reusable action inside the
guiLogin module, and we will call it
“CheckDialog”.
I will explain later, the considerations of this
decision.

Dani Vainstein & Monika Arora Gautam

20

Creating a new reusable action




From Menu : Insert  Call to New Action
Type : Hold the ALT key, and type ( I + N )
From toolbar as shown below:

Call to New Action

Dani Vainstein & Monika Arora Gautam

21

Adding a new reusable action
Name : CheckDialog

Description :
Manage all dialog checkpoints
under guiLogin

Reusable Action

Location : At the end of the test

Dani Vainstein & Monika Arora Gautam

22

CheckDialog Created




Now you should have two reusable actions.
Notice the actions listbox ( left ) and the
keyword view ( right ).

Dani Vainstein & Monika Arora Gautam

23

Mapping Dialogs



Move to Expert View Action CheckDialogs.
Open the local repository : Resources  Object
Repository
Or Type CTRL+R



Or from toolbar as shown below:




Object Repository

Dani Vainstein & Monika Arora Gautam

24

Mapping Dialogs






Open the Flight Reservation application if is not opened, and click
OK.
CAUTION : always be aware, specially when adding objects, that
you have only one instance of the AUT open.
What would happen? These child objects would be added under a
new “Dialog_2” parent object and would not be recognized during
playback.

Dani Vainstein & Monika Arora Gautam

25

Map Flight Reservations dialogs


Click OK to get Flight Reservations dialog.

Dani Vainstein & Monika Arora Gautam

26

Naming Conventions





Remove space between “Flight Reservation” and change it
to “FlightReservation".
Change the “static” to “Icon”.
Change “Please enter agent name” to “Msg”.

Dani Vainstein & Monika Arora Gautam

27

Mapping other dialogs?
Return to the same process and add all the objects/
dialog w.r.t. Logging in to Flight Application.
Try to map the following dialogs :







Why these are not added to the repository?

Dani Vainstein & Monika Arora Gautam

28

Mapping dialogs









That’s because all the messages has the same title “Flight
Reservations”.
For QTP all these dialogs are same.
Is it good? Of course! Otherwise you will have to map
every single message in your AUT.
But, what about the message displayed in the dialog?
The text is not the same.
This you will learn through the Object Identification
feature and the Object Spy in next upcoming slides.

Dani Vainstein & Monika Arora Gautam

29

Understanding object identification



Select the object Spy. From menu : Tools  Object Spy
Or from toolbar as shown below.

Object Spy

Dani Vainstein & Monika Arora Gautam

30

Object Spy




Dani Vainstein & Monika Arora Gautam

Click on the finger point and select the
message in the dialog.

Save a screenshot of the spy in “My
Pictures” and do same for this dialog
and compare properties for both the
messages.

31

Object Spy - Msg

Dani Vainstein & Monika Arora Gautam

32

Comparing



The properties are quite different. The key of the
mystery is the property window id, they are the
same = 65535.

Dani Vainstein & Monika Arora Gautam

33

Understanding The Object Identification


Another look to the repository will show us that the
object is identified by QTP using the native class and
window id, those properties have the same values

 You will see further,

why, this is a very big
advantage.

Dani Vainstein & Monika Arora Gautam

34

Highlight the Dialogs Messages in the
Application




Select the Msg object in the repository and Click the
“highlight in application” button while one of the popups is displayed, see what happens.
One by one do the same for other pop-ups, and see what
happens.

Highlight in application

Dani Vainstein & Monika Arora Gautam

35

Conclusion






Logically, QTP identifies all the messages inside
the same dialog as the only one message.
Imagine you have to map all the different
messages for same instance of dialog in your
AUT. It’s lot of job.
However QTP takes care of it by its Object
Identification and Spy feature.

Dani Vainstein & Monika Arora Gautam

36

Saving the Test



Save The Test.
Every Time you see * near the test name, it means that
the test is not saved. Always remember to save your
work.
Not Saved

Dani Vainstein & Monika Arora Gautam

37

Summary






We have created a new reusable action
guiLogin/guiLogin module
We a created a second new reusable action
guiLogin/CheckDialog
In this session we’ve learned how to map the Login
window and messages dialogs.

Dani Vainstein & Monika Arora Gautam

38

Special Thanks To


Bharathi Babu, India, Pune.



Ayyappa Koppolu, India, Pune.



Paul Grossman, USA, Chicago.



Sumit Singhal, India, Bangalore.



Sanjeev Mathur, India, Noida.



Manasa VN, India, Bangalore.



Prakash Kumar, India, Pune.



Richi Sharma, USA, New Jersey.



Janardhan Kalvakuntla, USA, New England.



Indlamudi Rajesh, India, Mumbai.

 Vainstein
Joydeep
Das,Arora
India,
Hyderabad.
Dani
& Monika
Gautam

39

Make sure to visit us for:






Tutorials
Articles
Projects
And much more

@
www.AdvancedQTP.com

Dani Vainstein & Monika Arora Gautam

40


Slide 6

Login Module

Building the Login GUI Layer Module

1

Topics covered







Create a new test, and classify it as a reusable
action under GUI Layer.
Adding Object to Local Object Repository.
Mapping Dialogs/ Objects.
Smart Identification.
Modify and save Test Settings.

Dani Vainstein & Monika Arora Gautam

2

Before you start…


Before starting the presentation, read about the
following topics in QTP help.






Reusable-Actions
Smart identification.
Action Parameters.
Object Spy.





Test Object Properties.
Run-time Object Properties.

Object Repository.

Dani Vainstein & Monika Arora Gautam

3

Things to Remember…




The Application Under Test (AUT) uses embedded
ActiveX objects, so when you first time open QTP, make
sure to check ActiveX option from Add-in manager.
When QTP is launched, be sure only the ActiveX option
is checked in the add-in manager.

Dani Vainstein & Monika Arora Gautam

4

guiLogin Module
Automation


FR
LIB
RA

Save the current test under
name = “guiLogin” in folder
FR\RA\GL

BL
GL

RS
DOC
DAT
SETTING

guiLogin

TESTS
RES
BATCH
ENV
Dani Vainstein & Monika Arora Gautam

5

guiLogin - Introduction








We are going to create a new Test and
reusable action.
The Test name would be guiLogin, because it
handles the “Login” dialog.
The main action will also called guiLogin. It
will be a reusable action, for further tests.
The guiLogin will receive an input parameter
of string type.

Dani Vainstein & Monika Arora Gautam

6

Modifying the Test Settings - Properties Tab

Description :
The guiLogin Module Stores all the actions required for the login process
Remark : associated add-ins : ActiveX only

Dani Vainstein & Monika Arora Gautam

7

Run Tab
Run one iteration only

Save The Test
Pop up
Message box
Disable Smart Identification
During the run session

Dani Vainstein & Monika Arora Gautam

8

Reusable action






We will create Reusable Action named guiLogin and set
the Action properties.
The guiLogin module ( reusable action ) implements all
the available actions on the Dialog login screen.
The Parameter StepName will be used as an instruction
to the reusable action i.e. “SetData”, “CheckLogo” etc.

Dani Vainstein & Monika Arora Gautam

9

guiLogin Reusable-Action


From Menu  Edit  Action  Action
Properties

Dani Vainstein & Monika Arora Gautam

10

guiLogin - General Tab
Change
Action
Name

Add
Description
Mark
Reusable

Dani Vainstein & Monika Arora Gautam

11

Parameters Tab – Add StepName


Add a new Input Parameter ( Click on + )
Add
StepName
Input
Parameter

Type
String

Dani Vainstein & Monika Arora Gautam

Add
Description

Default
Leave Empty

12

Mapping The Dialog Login







The guiLogin will hold a local repository.
The advantage of the OOT (Object Oriented Testing )
methodology, I think ( and others may disagree with me
) is that by having a reusable action per-screen, you
don’t have to maintain a shared object repository.
Especially when you work within a team, it helps
sparing the locks on the shared working files.
Mapping the application objects – is very important, you
should map your application before you start to “script”

Dani Vainstein & Monika Arora Gautam

13

Adding Objects to Local Repository




Open the Flight Application from Start  All Programs
 QuickTest Professional  Sample Applications 
Flight.
Do not login, just leave the window open.

Dani Vainstein & Monika Arora Gautam

14

Adding Objects to Local Repository





Open the local object repository from
menu  Resources  Object Repository.
Or just type Ctrl+R in QTP application.
QTP will show an hand icon.

Click Add objects in toolbar
Or
Object  Add objects To Local…

Dani Vainstein & Monika Arora Gautam

15

Mapping objects
Point the title-bar of dialog

Click OK
All Objects types

Click OK

Dani Vainstein & Monika Arora Gautam

16

Naming conventions



All the objects will be added to the local repository.
Remove spaces and non-alphanumeric characters from
Object Names.




Change “Agent Name:” to “AgentName”.
Change “Static” to “Logo”.
Remove all names with : (colon ) at the end of the name.

Dani Vainstein & Monika Arora Gautam

17

Why Renaming?











Sometimes there are two blanks instead of one; between two words.
According to my experience, nobody will make a new version for
such a mistake. Their answer ( R&D ) would be
“We will fix it later”.
For QTP this is critical, as it will not identify two spaces instead of
one.
The name “Static” says nothing to you and/or your colleagues, but
with “logo” you have no doubt.
QTP sometimes gives insignificant names to objects i.e. “button_1”
or “button_2”.
It is better to change these, to more descriptive names.
Changing logical names does not effect the QTP object recognition
mechanism.

Dani Vainstein & Monika Arora Gautam

18

Naming conventions

See the logical names
Convention changes

Dani Vainstein & Monika Arora Gautam

19

CheckDialog Reusable Action






We will learn how to check different dialog
messages that share same dialog title “Flight
Reservation”.
We will create a new reusable action inside the
guiLogin module, and we will call it
“CheckDialog”.
I will explain later, the considerations of this
decision.

Dani Vainstein & Monika Arora Gautam

20

Creating a new reusable action




From Menu : Insert  Call to New Action
Type : Hold the ALT key, and type ( I + N )
From toolbar as shown below:

Call to New Action

Dani Vainstein & Monika Arora Gautam

21

Adding a new reusable action
Name : CheckDialog

Description :
Manage all dialog checkpoints
under guiLogin

Reusable Action

Location : At the end of the test

Dani Vainstein & Monika Arora Gautam

22

CheckDialog Created




Now you should have two reusable actions.
Notice the actions listbox ( left ) and the
keyword view ( right ).

Dani Vainstein & Monika Arora Gautam

23

Mapping Dialogs



Move to Expert View Action CheckDialogs.
Open the local repository : Resources  Object
Repository
Or Type CTRL+R



Or from toolbar as shown below:




Object Repository

Dani Vainstein & Monika Arora Gautam

24

Mapping Dialogs






Open the Flight Reservation application if is not opened, and click
OK.
CAUTION : always be aware, specially when adding objects, that
you have only one instance of the AUT open.
What would happen? These child objects would be added under a
new “Dialog_2” parent object and would not be recognized during
playback.

Dani Vainstein & Monika Arora Gautam

25

Map Flight Reservations dialogs


Click OK to get Flight Reservations dialog.

Dani Vainstein & Monika Arora Gautam

26

Naming Conventions





Remove space between “Flight Reservation” and change it
to “FlightReservation".
Change the “static” to “Icon”.
Change “Please enter agent name” to “Msg”.

Dani Vainstein & Monika Arora Gautam

27

Mapping other dialogs?
Return to the same process and add all the objects/
dialog w.r.t. Logging in to Flight Application.
Try to map the following dialogs :







Why these are not added to the repository?

Dani Vainstein & Monika Arora Gautam

28

Mapping dialogs









That’s because all the messages has the same title “Flight
Reservations”.
For QTP all these dialogs are same.
Is it good? Of course! Otherwise you will have to map
every single message in your AUT.
But, what about the message displayed in the dialog?
The text is not the same.
This you will learn through the Object Identification
feature and the Object Spy in next upcoming slides.

Dani Vainstein & Monika Arora Gautam

29

Understanding object identification



Select the object Spy. From menu : Tools  Object Spy
Or from toolbar as shown below.

Object Spy

Dani Vainstein & Monika Arora Gautam

30

Object Spy




Dani Vainstein & Monika Arora Gautam

Click on the finger point and select the
message in the dialog.

Save a screenshot of the spy in “My
Pictures” and do same for this dialog
and compare properties for both the
messages.

31

Object Spy - Msg

Dani Vainstein & Monika Arora Gautam

32

Comparing



The properties are quite different. The key of the
mystery is the property window id, they are the
same = 65535.

Dani Vainstein & Monika Arora Gautam

33

Understanding The Object Identification


Another look to the repository will show us that the
object is identified by QTP using the native class and
window id, those properties have the same values

 You will see further,

why, this is a very big
advantage.

Dani Vainstein & Monika Arora Gautam

34

Highlight the Dialogs Messages in the
Application




Select the Msg object in the repository and Click the
“highlight in application” button while one of the popups is displayed, see what happens.
One by one do the same for other pop-ups, and see what
happens.

Highlight in application

Dani Vainstein & Monika Arora Gautam

35

Conclusion






Logically, QTP identifies all the messages inside
the same dialog as the only one message.
Imagine you have to map all the different
messages for same instance of dialog in your
AUT. It’s lot of job.
However QTP takes care of it by its Object
Identification and Spy feature.

Dani Vainstein & Monika Arora Gautam

36

Saving the Test



Save The Test.
Every Time you see * near the test name, it means that
the test is not saved. Always remember to save your
work.
Not Saved

Dani Vainstein & Monika Arora Gautam

37

Summary






We have created a new reusable action
guiLogin/guiLogin module
We a created a second new reusable action
guiLogin/CheckDialog
In this session we’ve learned how to map the Login
window and messages dialogs.

Dani Vainstein & Monika Arora Gautam

38

Special Thanks To


Bharathi Babu, India, Pune.



Ayyappa Koppolu, India, Pune.



Paul Grossman, USA, Chicago.



Sumit Singhal, India, Bangalore.



Sanjeev Mathur, India, Noida.



Manasa VN, India, Bangalore.



Prakash Kumar, India, Pune.



Richi Sharma, USA, New Jersey.



Janardhan Kalvakuntla, USA, New England.



Indlamudi Rajesh, India, Mumbai.

 Vainstein
Joydeep
Das,Arora
India,
Hyderabad.
Dani
& Monika
Gautam

39

Make sure to visit us for:






Tutorials
Articles
Projects
And much more

@
www.AdvancedQTP.com

Dani Vainstein & Monika Arora Gautam

40


Slide 7

Login Module

Building the Login GUI Layer Module

1

Topics covered







Create a new test, and classify it as a reusable
action under GUI Layer.
Adding Object to Local Object Repository.
Mapping Dialogs/ Objects.
Smart Identification.
Modify and save Test Settings.

Dani Vainstein & Monika Arora Gautam

2

Before you start…


Before starting the presentation, read about the
following topics in QTP help.






Reusable-Actions
Smart identification.
Action Parameters.
Object Spy.





Test Object Properties.
Run-time Object Properties.

Object Repository.

Dani Vainstein & Monika Arora Gautam

3

Things to Remember…




The Application Under Test (AUT) uses embedded
ActiveX objects, so when you first time open QTP, make
sure to check ActiveX option from Add-in manager.
When QTP is launched, be sure only the ActiveX option
is checked in the add-in manager.

Dani Vainstein & Monika Arora Gautam

4

guiLogin Module
Automation


FR
LIB
RA

Save the current test under
name = “guiLogin” in folder
FR\RA\GL

BL
GL

RS
DOC
DAT
SETTING

guiLogin

TESTS
RES
BATCH
ENV
Dani Vainstein & Monika Arora Gautam

5

guiLogin - Introduction








We are going to create a new Test and
reusable action.
The Test name would be guiLogin, because it
handles the “Login” dialog.
The main action will also called guiLogin. It
will be a reusable action, for further tests.
The guiLogin will receive an input parameter
of string type.

Dani Vainstein & Monika Arora Gautam

6

Modifying the Test Settings - Properties Tab

Description :
The guiLogin Module Stores all the actions required for the login process
Remark : associated add-ins : ActiveX only

Dani Vainstein & Monika Arora Gautam

7

Run Tab
Run one iteration only

Save The Test
Pop up
Message box
Disable Smart Identification
During the run session

Dani Vainstein & Monika Arora Gautam

8

Reusable action






We will create Reusable Action named guiLogin and set
the Action properties.
The guiLogin module ( reusable action ) implements all
the available actions on the Dialog login screen.
The Parameter StepName will be used as an instruction
to the reusable action i.e. “SetData”, “CheckLogo” etc.

Dani Vainstein & Monika Arora Gautam

9

guiLogin Reusable-Action


From Menu  Edit  Action  Action
Properties

Dani Vainstein & Monika Arora Gautam

10

guiLogin - General Tab
Change
Action
Name

Add
Description
Mark
Reusable

Dani Vainstein & Monika Arora Gautam

11

Parameters Tab – Add StepName


Add a new Input Parameter ( Click on + )
Add
StepName
Input
Parameter

Type
String

Dani Vainstein & Monika Arora Gautam

Add
Description

Default
Leave Empty

12

Mapping The Dialog Login







The guiLogin will hold a local repository.
The advantage of the OOT (Object Oriented Testing )
methodology, I think ( and others may disagree with me
) is that by having a reusable action per-screen, you
don’t have to maintain a shared object repository.
Especially when you work within a team, it helps
sparing the locks on the shared working files.
Mapping the application objects – is very important, you
should map your application before you start to “script”

Dani Vainstein & Monika Arora Gautam

13

Adding Objects to Local Repository




Open the Flight Application from Start  All Programs
 QuickTest Professional  Sample Applications 
Flight.
Do not login, just leave the window open.

Dani Vainstein & Monika Arora Gautam

14

Adding Objects to Local Repository





Open the local object repository from
menu  Resources  Object Repository.
Or just type Ctrl+R in QTP application.
QTP will show an hand icon.

Click Add objects in toolbar
Or
Object  Add objects To Local…

Dani Vainstein & Monika Arora Gautam

15

Mapping objects
Point the title-bar of dialog

Click OK
All Objects types

Click OK

Dani Vainstein & Monika Arora Gautam

16

Naming conventions



All the objects will be added to the local repository.
Remove spaces and non-alphanumeric characters from
Object Names.




Change “Agent Name:” to “AgentName”.
Change “Static” to “Logo”.
Remove all names with : (colon ) at the end of the name.

Dani Vainstein & Monika Arora Gautam

17

Why Renaming?











Sometimes there are two blanks instead of one; between two words.
According to my experience, nobody will make a new version for
such a mistake. Their answer ( R&D ) would be
“We will fix it later”.
For QTP this is critical, as it will not identify two spaces instead of
one.
The name “Static” says nothing to you and/or your colleagues, but
with “logo” you have no doubt.
QTP sometimes gives insignificant names to objects i.e. “button_1”
or “button_2”.
It is better to change these, to more descriptive names.
Changing logical names does not effect the QTP object recognition
mechanism.

Dani Vainstein & Monika Arora Gautam

18

Naming conventions

See the logical names
Convention changes

Dani Vainstein & Monika Arora Gautam

19

CheckDialog Reusable Action






We will learn how to check different dialog
messages that share same dialog title “Flight
Reservation”.
We will create a new reusable action inside the
guiLogin module, and we will call it
“CheckDialog”.
I will explain later, the considerations of this
decision.

Dani Vainstein & Monika Arora Gautam

20

Creating a new reusable action




From Menu : Insert  Call to New Action
Type : Hold the ALT key, and type ( I + N )
From toolbar as shown below:

Call to New Action

Dani Vainstein & Monika Arora Gautam

21

Adding a new reusable action
Name : CheckDialog

Description :
Manage all dialog checkpoints
under guiLogin

Reusable Action

Location : At the end of the test

Dani Vainstein & Monika Arora Gautam

22

CheckDialog Created




Now you should have two reusable actions.
Notice the actions listbox ( left ) and the
keyword view ( right ).

Dani Vainstein & Monika Arora Gautam

23

Mapping Dialogs



Move to Expert View Action CheckDialogs.
Open the local repository : Resources  Object
Repository
Or Type CTRL+R



Or from toolbar as shown below:




Object Repository

Dani Vainstein & Monika Arora Gautam

24

Mapping Dialogs






Open the Flight Reservation application if is not opened, and click
OK.
CAUTION : always be aware, specially when adding objects, that
you have only one instance of the AUT open.
What would happen? These child objects would be added under a
new “Dialog_2” parent object and would not be recognized during
playback.

Dani Vainstein & Monika Arora Gautam

25

Map Flight Reservations dialogs


Click OK to get Flight Reservations dialog.

Dani Vainstein & Monika Arora Gautam

26

Naming Conventions





Remove space between “Flight Reservation” and change it
to “FlightReservation".
Change the “static” to “Icon”.
Change “Please enter agent name” to “Msg”.

Dani Vainstein & Monika Arora Gautam

27

Mapping other dialogs?
Return to the same process and add all the objects/
dialog w.r.t. Logging in to Flight Application.
Try to map the following dialogs :







Why these are not added to the repository?

Dani Vainstein & Monika Arora Gautam

28

Mapping dialogs









That’s because all the messages has the same title “Flight
Reservations”.
For QTP all these dialogs are same.
Is it good? Of course! Otherwise you will have to map
every single message in your AUT.
But, what about the message displayed in the dialog?
The text is not the same.
This you will learn through the Object Identification
feature and the Object Spy in next upcoming slides.

Dani Vainstein & Monika Arora Gautam

29

Understanding object identification



Select the object Spy. From menu : Tools  Object Spy
Or from toolbar as shown below.

Object Spy

Dani Vainstein & Monika Arora Gautam

30

Object Spy




Dani Vainstein & Monika Arora Gautam

Click on the finger point and select the
message in the dialog.

Save a screenshot of the spy in “My
Pictures” and do same for this dialog
and compare properties for both the
messages.

31

Object Spy - Msg

Dani Vainstein & Monika Arora Gautam

32

Comparing



The properties are quite different. The key of the
mystery is the property window id, they are the
same = 65535.

Dani Vainstein & Monika Arora Gautam

33

Understanding The Object Identification


Another look to the repository will show us that the
object is identified by QTP using the native class and
window id, those properties have the same values

 You will see further,

why, this is a very big
advantage.

Dani Vainstein & Monika Arora Gautam

34

Highlight the Dialogs Messages in the
Application




Select the Msg object in the repository and Click the
“highlight in application” button while one of the popups is displayed, see what happens.
One by one do the same for other pop-ups, and see what
happens.

Highlight in application

Dani Vainstein & Monika Arora Gautam

35

Conclusion






Logically, QTP identifies all the messages inside
the same dialog as the only one message.
Imagine you have to map all the different
messages for same instance of dialog in your
AUT. It’s lot of job.
However QTP takes care of it by its Object
Identification and Spy feature.

Dani Vainstein & Monika Arora Gautam

36

Saving the Test



Save The Test.
Every Time you see * near the test name, it means that
the test is not saved. Always remember to save your
work.
Not Saved

Dani Vainstein & Monika Arora Gautam

37

Summary






We have created a new reusable action
guiLogin/guiLogin module
We a created a second new reusable action
guiLogin/CheckDialog
In this session we’ve learned how to map the Login
window and messages dialogs.

Dani Vainstein & Monika Arora Gautam

38

Special Thanks To


Bharathi Babu, India, Pune.



Ayyappa Koppolu, India, Pune.



Paul Grossman, USA, Chicago.



Sumit Singhal, India, Bangalore.



Sanjeev Mathur, India, Noida.



Manasa VN, India, Bangalore.



Prakash Kumar, India, Pune.



Richi Sharma, USA, New Jersey.



Janardhan Kalvakuntla, USA, New England.



Indlamudi Rajesh, India, Mumbai.

 Vainstein
Joydeep
Das,Arora
India,
Hyderabad.
Dani
& Monika
Gautam

39

Make sure to visit us for:






Tutorials
Articles
Projects
And much more

@
www.AdvancedQTP.com

Dani Vainstein & Monika Arora Gautam

40


Slide 8

Login Module

Building the Login GUI Layer Module

1

Topics covered







Create a new test, and classify it as a reusable
action under GUI Layer.
Adding Object to Local Object Repository.
Mapping Dialogs/ Objects.
Smart Identification.
Modify and save Test Settings.

Dani Vainstein & Monika Arora Gautam

2

Before you start…


Before starting the presentation, read about the
following topics in QTP help.






Reusable-Actions
Smart identification.
Action Parameters.
Object Spy.





Test Object Properties.
Run-time Object Properties.

Object Repository.

Dani Vainstein & Monika Arora Gautam

3

Things to Remember…




The Application Under Test (AUT) uses embedded
ActiveX objects, so when you first time open QTP, make
sure to check ActiveX option from Add-in manager.
When QTP is launched, be sure only the ActiveX option
is checked in the add-in manager.

Dani Vainstein & Monika Arora Gautam

4

guiLogin Module
Automation


FR
LIB
RA

Save the current test under
name = “guiLogin” in folder
FR\RA\GL

BL
GL

RS
DOC
DAT
SETTING

guiLogin

TESTS
RES
BATCH
ENV
Dani Vainstein & Monika Arora Gautam

5

guiLogin - Introduction








We are going to create a new Test and
reusable action.
The Test name would be guiLogin, because it
handles the “Login” dialog.
The main action will also called guiLogin. It
will be a reusable action, for further tests.
The guiLogin will receive an input parameter
of string type.

Dani Vainstein & Monika Arora Gautam

6

Modifying the Test Settings - Properties Tab

Description :
The guiLogin Module Stores all the actions required for the login process
Remark : associated add-ins : ActiveX only

Dani Vainstein & Monika Arora Gautam

7

Run Tab
Run one iteration only

Save The Test
Pop up
Message box
Disable Smart Identification
During the run session

Dani Vainstein & Monika Arora Gautam

8

Reusable action






We will create Reusable Action named guiLogin and set
the Action properties.
The guiLogin module ( reusable action ) implements all
the available actions on the Dialog login screen.
The Parameter StepName will be used as an instruction
to the reusable action i.e. “SetData”, “CheckLogo” etc.

Dani Vainstein & Monika Arora Gautam

9

guiLogin Reusable-Action


From Menu  Edit  Action  Action
Properties

Dani Vainstein & Monika Arora Gautam

10

guiLogin - General Tab
Change
Action
Name

Add
Description
Mark
Reusable

Dani Vainstein & Monika Arora Gautam

11

Parameters Tab – Add StepName


Add a new Input Parameter ( Click on + )
Add
StepName
Input
Parameter

Type
String

Dani Vainstein & Monika Arora Gautam

Add
Description

Default
Leave Empty

12

Mapping The Dialog Login







The guiLogin will hold a local repository.
The advantage of the OOT (Object Oriented Testing )
methodology, I think ( and others may disagree with me
) is that by having a reusable action per-screen, you
don’t have to maintain a shared object repository.
Especially when you work within a team, it helps
sparing the locks on the shared working files.
Mapping the application objects – is very important, you
should map your application before you start to “script”

Dani Vainstein & Monika Arora Gautam

13

Adding Objects to Local Repository




Open the Flight Application from Start  All Programs
 QuickTest Professional  Sample Applications 
Flight.
Do not login, just leave the window open.

Dani Vainstein & Monika Arora Gautam

14

Adding Objects to Local Repository





Open the local object repository from
menu  Resources  Object Repository.
Or just type Ctrl+R in QTP application.
QTP will show an hand icon.

Click Add objects in toolbar
Or
Object  Add objects To Local…

Dani Vainstein & Monika Arora Gautam

15

Mapping objects
Point the title-bar of dialog

Click OK
All Objects types

Click OK

Dani Vainstein & Monika Arora Gautam

16

Naming conventions



All the objects will be added to the local repository.
Remove spaces and non-alphanumeric characters from
Object Names.




Change “Agent Name:” to “AgentName”.
Change “Static” to “Logo”.
Remove all names with : (colon ) at the end of the name.

Dani Vainstein & Monika Arora Gautam

17

Why Renaming?











Sometimes there are two blanks instead of one; between two words.
According to my experience, nobody will make a new version for
such a mistake. Their answer ( R&D ) would be
“We will fix it later”.
For QTP this is critical, as it will not identify two spaces instead of
one.
The name “Static” says nothing to you and/or your colleagues, but
with “logo” you have no doubt.
QTP sometimes gives insignificant names to objects i.e. “button_1”
or “button_2”.
It is better to change these, to more descriptive names.
Changing logical names does not effect the QTP object recognition
mechanism.

Dani Vainstein & Monika Arora Gautam

18

Naming conventions

See the logical names
Convention changes

Dani Vainstein & Monika Arora Gautam

19

CheckDialog Reusable Action






We will learn how to check different dialog
messages that share same dialog title “Flight
Reservation”.
We will create a new reusable action inside the
guiLogin module, and we will call it
“CheckDialog”.
I will explain later, the considerations of this
decision.

Dani Vainstein & Monika Arora Gautam

20

Creating a new reusable action




From Menu : Insert  Call to New Action
Type : Hold the ALT key, and type ( I + N )
From toolbar as shown below:

Call to New Action

Dani Vainstein & Monika Arora Gautam

21

Adding a new reusable action
Name : CheckDialog

Description :
Manage all dialog checkpoints
under guiLogin

Reusable Action

Location : At the end of the test

Dani Vainstein & Monika Arora Gautam

22

CheckDialog Created




Now you should have two reusable actions.
Notice the actions listbox ( left ) and the
keyword view ( right ).

Dani Vainstein & Monika Arora Gautam

23

Mapping Dialogs



Move to Expert View Action CheckDialogs.
Open the local repository : Resources  Object
Repository
Or Type CTRL+R



Or from toolbar as shown below:




Object Repository

Dani Vainstein & Monika Arora Gautam

24

Mapping Dialogs






Open the Flight Reservation application if is not opened, and click
OK.
CAUTION : always be aware, specially when adding objects, that
you have only one instance of the AUT open.
What would happen? These child objects would be added under a
new “Dialog_2” parent object and would not be recognized during
playback.

Dani Vainstein & Monika Arora Gautam

25

Map Flight Reservations dialogs


Click OK to get Flight Reservations dialog.

Dani Vainstein & Monika Arora Gautam

26

Naming Conventions





Remove space between “Flight Reservation” and change it
to “FlightReservation".
Change the “static” to “Icon”.
Change “Please enter agent name” to “Msg”.

Dani Vainstein & Monika Arora Gautam

27

Mapping other dialogs?
Return to the same process and add all the objects/
dialog w.r.t. Logging in to Flight Application.
Try to map the following dialogs :







Why these are not added to the repository?

Dani Vainstein & Monika Arora Gautam

28

Mapping dialogs









That’s because all the messages has the same title “Flight
Reservations”.
For QTP all these dialogs are same.
Is it good? Of course! Otherwise you will have to map
every single message in your AUT.
But, what about the message displayed in the dialog?
The text is not the same.
This you will learn through the Object Identification
feature and the Object Spy in next upcoming slides.

Dani Vainstein & Monika Arora Gautam

29

Understanding object identification



Select the object Spy. From menu : Tools  Object Spy
Or from toolbar as shown below.

Object Spy

Dani Vainstein & Monika Arora Gautam

30

Object Spy




Dani Vainstein & Monika Arora Gautam

Click on the finger point and select the
message in the dialog.

Save a screenshot of the spy in “My
Pictures” and do same for this dialog
and compare properties for both the
messages.

31

Object Spy - Msg

Dani Vainstein & Monika Arora Gautam

32

Comparing



The properties are quite different. The key of the
mystery is the property window id, they are the
same = 65535.

Dani Vainstein & Monika Arora Gautam

33

Understanding The Object Identification


Another look to the repository will show us that the
object is identified by QTP using the native class and
window id, those properties have the same values

 You will see further,

why, this is a very big
advantage.

Dani Vainstein & Monika Arora Gautam

34

Highlight the Dialogs Messages in the
Application




Select the Msg object in the repository and Click the
“highlight in application” button while one of the popups is displayed, see what happens.
One by one do the same for other pop-ups, and see what
happens.

Highlight in application

Dani Vainstein & Monika Arora Gautam

35

Conclusion






Logically, QTP identifies all the messages inside
the same dialog as the only one message.
Imagine you have to map all the different
messages for same instance of dialog in your
AUT. It’s lot of job.
However QTP takes care of it by its Object
Identification and Spy feature.

Dani Vainstein & Monika Arora Gautam

36

Saving the Test



Save The Test.
Every Time you see * near the test name, it means that
the test is not saved. Always remember to save your
work.
Not Saved

Dani Vainstein & Monika Arora Gautam

37

Summary






We have created a new reusable action
guiLogin/guiLogin module
We a created a second new reusable action
guiLogin/CheckDialog
In this session we’ve learned how to map the Login
window and messages dialogs.

Dani Vainstein & Monika Arora Gautam

38

Special Thanks To


Bharathi Babu, India, Pune.



Ayyappa Koppolu, India, Pune.



Paul Grossman, USA, Chicago.



Sumit Singhal, India, Bangalore.



Sanjeev Mathur, India, Noida.



Manasa VN, India, Bangalore.



Prakash Kumar, India, Pune.



Richi Sharma, USA, New Jersey.



Janardhan Kalvakuntla, USA, New England.



Indlamudi Rajesh, India, Mumbai.

 Vainstein
Joydeep
Das,Arora
India,
Hyderabad.
Dani
& Monika
Gautam

39

Make sure to visit us for:






Tutorials
Articles
Projects
And much more

@
www.AdvancedQTP.com

Dani Vainstein & Monika Arora Gautam

40


Slide 9

Login Module

Building the Login GUI Layer Module

1

Topics covered







Create a new test, and classify it as a reusable
action under GUI Layer.
Adding Object to Local Object Repository.
Mapping Dialogs/ Objects.
Smart Identification.
Modify and save Test Settings.

Dani Vainstein & Monika Arora Gautam

2

Before you start…


Before starting the presentation, read about the
following topics in QTP help.






Reusable-Actions
Smart identification.
Action Parameters.
Object Spy.





Test Object Properties.
Run-time Object Properties.

Object Repository.

Dani Vainstein & Monika Arora Gautam

3

Things to Remember…




The Application Under Test (AUT) uses embedded
ActiveX objects, so when you first time open QTP, make
sure to check ActiveX option from Add-in manager.
When QTP is launched, be sure only the ActiveX option
is checked in the add-in manager.

Dani Vainstein & Monika Arora Gautam

4

guiLogin Module
Automation


FR
LIB
RA

Save the current test under
name = “guiLogin” in folder
FR\RA\GL

BL
GL

RS
DOC
DAT
SETTING

guiLogin

TESTS
RES
BATCH
ENV
Dani Vainstein & Monika Arora Gautam

5

guiLogin - Introduction








We are going to create a new Test and
reusable action.
The Test name would be guiLogin, because it
handles the “Login” dialog.
The main action will also called guiLogin. It
will be a reusable action, for further tests.
The guiLogin will receive an input parameter
of string type.

Dani Vainstein & Monika Arora Gautam

6

Modifying the Test Settings - Properties Tab

Description :
The guiLogin Module Stores all the actions required for the login process
Remark : associated add-ins : ActiveX only

Dani Vainstein & Monika Arora Gautam

7

Run Tab
Run one iteration only

Save The Test
Pop up
Message box
Disable Smart Identification
During the run session

Dani Vainstein & Monika Arora Gautam

8

Reusable action






We will create Reusable Action named guiLogin and set
the Action properties.
The guiLogin module ( reusable action ) implements all
the available actions on the Dialog login screen.
The Parameter StepName will be used as an instruction
to the reusable action i.e. “SetData”, “CheckLogo” etc.

Dani Vainstein & Monika Arora Gautam

9

guiLogin Reusable-Action


From Menu  Edit  Action  Action
Properties

Dani Vainstein & Monika Arora Gautam

10

guiLogin - General Tab
Change
Action
Name

Add
Description
Mark
Reusable

Dani Vainstein & Monika Arora Gautam

11

Parameters Tab – Add StepName


Add a new Input Parameter ( Click on + )
Add
StepName
Input
Parameter

Type
String

Dani Vainstein & Monika Arora Gautam

Add
Description

Default
Leave Empty

12

Mapping The Dialog Login







The guiLogin will hold a local repository.
The advantage of the OOT (Object Oriented Testing )
methodology, I think ( and others may disagree with me
) is that by having a reusable action per-screen, you
don’t have to maintain a shared object repository.
Especially when you work within a team, it helps
sparing the locks on the shared working files.
Mapping the application objects – is very important, you
should map your application before you start to “script”

Dani Vainstein & Monika Arora Gautam

13

Adding Objects to Local Repository




Open the Flight Application from Start  All Programs
 QuickTest Professional  Sample Applications 
Flight.
Do not login, just leave the window open.

Dani Vainstein & Monika Arora Gautam

14

Adding Objects to Local Repository





Open the local object repository from
menu  Resources  Object Repository.
Or just type Ctrl+R in QTP application.
QTP will show an hand icon.

Click Add objects in toolbar
Or
Object  Add objects To Local…

Dani Vainstein & Monika Arora Gautam

15

Mapping objects
Point the title-bar of dialog

Click OK
All Objects types

Click OK

Dani Vainstein & Monika Arora Gautam

16

Naming conventions



All the objects will be added to the local repository.
Remove spaces and non-alphanumeric characters from
Object Names.




Change “Agent Name:” to “AgentName”.
Change “Static” to “Logo”.
Remove all names with : (colon ) at the end of the name.

Dani Vainstein & Monika Arora Gautam

17

Why Renaming?











Sometimes there are two blanks instead of one; between two words.
According to my experience, nobody will make a new version for
such a mistake. Their answer ( R&D ) would be
“We will fix it later”.
For QTP this is critical, as it will not identify two spaces instead of
one.
The name “Static” says nothing to you and/or your colleagues, but
with “logo” you have no doubt.
QTP sometimes gives insignificant names to objects i.e. “button_1”
or “button_2”.
It is better to change these, to more descriptive names.
Changing logical names does not effect the QTP object recognition
mechanism.

Dani Vainstein & Monika Arora Gautam

18

Naming conventions

See the logical names
Convention changes

Dani Vainstein & Monika Arora Gautam

19

CheckDialog Reusable Action






We will learn how to check different dialog
messages that share same dialog title “Flight
Reservation”.
We will create a new reusable action inside the
guiLogin module, and we will call it
“CheckDialog”.
I will explain later, the considerations of this
decision.

Dani Vainstein & Monika Arora Gautam

20

Creating a new reusable action




From Menu : Insert  Call to New Action
Type : Hold the ALT key, and type ( I + N )
From toolbar as shown below:

Call to New Action

Dani Vainstein & Monika Arora Gautam

21

Adding a new reusable action
Name : CheckDialog

Description :
Manage all dialog checkpoints
under guiLogin

Reusable Action

Location : At the end of the test

Dani Vainstein & Monika Arora Gautam

22

CheckDialog Created




Now you should have two reusable actions.
Notice the actions listbox ( left ) and the
keyword view ( right ).

Dani Vainstein & Monika Arora Gautam

23

Mapping Dialogs



Move to Expert View Action CheckDialogs.
Open the local repository : Resources  Object
Repository
Or Type CTRL+R



Or from toolbar as shown below:




Object Repository

Dani Vainstein & Monika Arora Gautam

24

Mapping Dialogs






Open the Flight Reservation application if is not opened, and click
OK.
CAUTION : always be aware, specially when adding objects, that
you have only one instance of the AUT open.
What would happen? These child objects would be added under a
new “Dialog_2” parent object and would not be recognized during
playback.

Dani Vainstein & Monika Arora Gautam

25

Map Flight Reservations dialogs


Click OK to get Flight Reservations dialog.

Dani Vainstein & Monika Arora Gautam

26

Naming Conventions





Remove space between “Flight Reservation” and change it
to “FlightReservation".
Change the “static” to “Icon”.
Change “Please enter agent name” to “Msg”.

Dani Vainstein & Monika Arora Gautam

27

Mapping other dialogs?
Return to the same process and add all the objects/
dialog w.r.t. Logging in to Flight Application.
Try to map the following dialogs :







Why these are not added to the repository?

Dani Vainstein & Monika Arora Gautam

28

Mapping dialogs









That’s because all the messages has the same title “Flight
Reservations”.
For QTP all these dialogs are same.
Is it good? Of course! Otherwise you will have to map
every single message in your AUT.
But, what about the message displayed in the dialog?
The text is not the same.
This you will learn through the Object Identification
feature and the Object Spy in next upcoming slides.

Dani Vainstein & Monika Arora Gautam

29

Understanding object identification



Select the object Spy. From menu : Tools  Object Spy
Or from toolbar as shown below.

Object Spy

Dani Vainstein & Monika Arora Gautam

30

Object Spy




Dani Vainstein & Monika Arora Gautam

Click on the finger point and select the
message in the dialog.

Save a screenshot of the spy in “My
Pictures” and do same for this dialog
and compare properties for both the
messages.

31

Object Spy - Msg

Dani Vainstein & Monika Arora Gautam

32

Comparing



The properties are quite different. The key of the
mystery is the property window id, they are the
same = 65535.

Dani Vainstein & Monika Arora Gautam

33

Understanding The Object Identification


Another look to the repository will show us that the
object is identified by QTP using the native class and
window id, those properties have the same values

 You will see further,

why, this is a very big
advantage.

Dani Vainstein & Monika Arora Gautam

34

Highlight the Dialogs Messages in the
Application




Select the Msg object in the repository and Click the
“highlight in application” button while one of the popups is displayed, see what happens.
One by one do the same for other pop-ups, and see what
happens.

Highlight in application

Dani Vainstein & Monika Arora Gautam

35

Conclusion






Logically, QTP identifies all the messages inside
the same dialog as the only one message.
Imagine you have to map all the different
messages for same instance of dialog in your
AUT. It’s lot of job.
However QTP takes care of it by its Object
Identification and Spy feature.

Dani Vainstein & Monika Arora Gautam

36

Saving the Test



Save The Test.
Every Time you see * near the test name, it means that
the test is not saved. Always remember to save your
work.
Not Saved

Dani Vainstein & Monika Arora Gautam

37

Summary






We have created a new reusable action
guiLogin/guiLogin module
We a created a second new reusable action
guiLogin/CheckDialog
In this session we’ve learned how to map the Login
window and messages dialogs.

Dani Vainstein & Monika Arora Gautam

38

Special Thanks To


Bharathi Babu, India, Pune.



Ayyappa Koppolu, India, Pune.



Paul Grossman, USA, Chicago.



Sumit Singhal, India, Bangalore.



Sanjeev Mathur, India, Noida.



Manasa VN, India, Bangalore.



Prakash Kumar, India, Pune.



Richi Sharma, USA, New Jersey.



Janardhan Kalvakuntla, USA, New England.



Indlamudi Rajesh, India, Mumbai.

 Vainstein
Joydeep
Das,Arora
India,
Hyderabad.
Dani
& Monika
Gautam

39

Make sure to visit us for:






Tutorials
Articles
Projects
And much more

@
www.AdvancedQTP.com

Dani Vainstein & Monika Arora Gautam

40


Slide 10

Login Module

Building the Login GUI Layer Module

1

Topics covered







Create a new test, and classify it as a reusable
action under GUI Layer.
Adding Object to Local Object Repository.
Mapping Dialogs/ Objects.
Smart Identification.
Modify and save Test Settings.

Dani Vainstein & Monika Arora Gautam

2

Before you start…


Before starting the presentation, read about the
following topics in QTP help.






Reusable-Actions
Smart identification.
Action Parameters.
Object Spy.





Test Object Properties.
Run-time Object Properties.

Object Repository.

Dani Vainstein & Monika Arora Gautam

3

Things to Remember…




The Application Under Test (AUT) uses embedded
ActiveX objects, so when you first time open QTP, make
sure to check ActiveX option from Add-in manager.
When QTP is launched, be sure only the ActiveX option
is checked in the add-in manager.

Dani Vainstein & Monika Arora Gautam

4

guiLogin Module
Automation


FR
LIB
RA

Save the current test under
name = “guiLogin” in folder
FR\RA\GL

BL
GL

RS
DOC
DAT
SETTING

guiLogin

TESTS
RES
BATCH
ENV
Dani Vainstein & Monika Arora Gautam

5

guiLogin - Introduction








We are going to create a new Test and
reusable action.
The Test name would be guiLogin, because it
handles the “Login” dialog.
The main action will also called guiLogin. It
will be a reusable action, for further tests.
The guiLogin will receive an input parameter
of string type.

Dani Vainstein & Monika Arora Gautam

6

Modifying the Test Settings - Properties Tab

Description :
The guiLogin Module Stores all the actions required for the login process
Remark : associated add-ins : ActiveX only

Dani Vainstein & Monika Arora Gautam

7

Run Tab
Run one iteration only

Save The Test
Pop up
Message box
Disable Smart Identification
During the run session

Dani Vainstein & Monika Arora Gautam

8

Reusable action






We will create Reusable Action named guiLogin and set
the Action properties.
The guiLogin module ( reusable action ) implements all
the available actions on the Dialog login screen.
The Parameter StepName will be used as an instruction
to the reusable action i.e. “SetData”, “CheckLogo” etc.

Dani Vainstein & Monika Arora Gautam

9

guiLogin Reusable-Action


From Menu  Edit  Action  Action
Properties

Dani Vainstein & Monika Arora Gautam

10

guiLogin - General Tab
Change
Action
Name

Add
Description
Mark
Reusable

Dani Vainstein & Monika Arora Gautam

11

Parameters Tab – Add StepName


Add a new Input Parameter ( Click on + )
Add
StepName
Input
Parameter

Type
String

Dani Vainstein & Monika Arora Gautam

Add
Description

Default
Leave Empty

12

Mapping The Dialog Login







The guiLogin will hold a local repository.
The advantage of the OOT (Object Oriented Testing )
methodology, I think ( and others may disagree with me
) is that by having a reusable action per-screen, you
don’t have to maintain a shared object repository.
Especially when you work within a team, it helps
sparing the locks on the shared working files.
Mapping the application objects – is very important, you
should map your application before you start to “script”

Dani Vainstein & Monika Arora Gautam

13

Adding Objects to Local Repository




Open the Flight Application from Start  All Programs
 QuickTest Professional  Sample Applications 
Flight.
Do not login, just leave the window open.

Dani Vainstein & Monika Arora Gautam

14

Adding Objects to Local Repository





Open the local object repository from
menu  Resources  Object Repository.
Or just type Ctrl+R in QTP application.
QTP will show an hand icon.

Click Add objects in toolbar
Or
Object  Add objects To Local…

Dani Vainstein & Monika Arora Gautam

15

Mapping objects
Point the title-bar of dialog

Click OK
All Objects types

Click OK

Dani Vainstein & Monika Arora Gautam

16

Naming conventions



All the objects will be added to the local repository.
Remove spaces and non-alphanumeric characters from
Object Names.




Change “Agent Name:” to “AgentName”.
Change “Static” to “Logo”.
Remove all names with : (colon ) at the end of the name.

Dani Vainstein & Monika Arora Gautam

17

Why Renaming?











Sometimes there are two blanks instead of one; between two words.
According to my experience, nobody will make a new version for
such a mistake. Their answer ( R&D ) would be
“We will fix it later”.
For QTP this is critical, as it will not identify two spaces instead of
one.
The name “Static” says nothing to you and/or your colleagues, but
with “logo” you have no doubt.
QTP sometimes gives insignificant names to objects i.e. “button_1”
or “button_2”.
It is better to change these, to more descriptive names.
Changing logical names does not effect the QTP object recognition
mechanism.

Dani Vainstein & Monika Arora Gautam

18

Naming conventions

See the logical names
Convention changes

Dani Vainstein & Monika Arora Gautam

19

CheckDialog Reusable Action






We will learn how to check different dialog
messages that share same dialog title “Flight
Reservation”.
We will create a new reusable action inside the
guiLogin module, and we will call it
“CheckDialog”.
I will explain later, the considerations of this
decision.

Dani Vainstein & Monika Arora Gautam

20

Creating a new reusable action




From Menu : Insert  Call to New Action
Type : Hold the ALT key, and type ( I + N )
From toolbar as shown below:

Call to New Action

Dani Vainstein & Monika Arora Gautam

21

Adding a new reusable action
Name : CheckDialog

Description :
Manage all dialog checkpoints
under guiLogin

Reusable Action

Location : At the end of the test

Dani Vainstein & Monika Arora Gautam

22

CheckDialog Created




Now you should have two reusable actions.
Notice the actions listbox ( left ) and the
keyword view ( right ).

Dani Vainstein & Monika Arora Gautam

23

Mapping Dialogs



Move to Expert View Action CheckDialogs.
Open the local repository : Resources  Object
Repository
Or Type CTRL+R



Or from toolbar as shown below:




Object Repository

Dani Vainstein & Monika Arora Gautam

24

Mapping Dialogs






Open the Flight Reservation application if is not opened, and click
OK.
CAUTION : always be aware, specially when adding objects, that
you have only one instance of the AUT open.
What would happen? These child objects would be added under a
new “Dialog_2” parent object and would not be recognized during
playback.

Dani Vainstein & Monika Arora Gautam

25

Map Flight Reservations dialogs


Click OK to get Flight Reservations dialog.

Dani Vainstein & Monika Arora Gautam

26

Naming Conventions





Remove space between “Flight Reservation” and change it
to “FlightReservation".
Change the “static” to “Icon”.
Change “Please enter agent name” to “Msg”.

Dani Vainstein & Monika Arora Gautam

27

Mapping other dialogs?
Return to the same process and add all the objects/
dialog w.r.t. Logging in to Flight Application.
Try to map the following dialogs :







Why these are not added to the repository?

Dani Vainstein & Monika Arora Gautam

28

Mapping dialogs









That’s because all the messages has the same title “Flight
Reservations”.
For QTP all these dialogs are same.
Is it good? Of course! Otherwise you will have to map
every single message in your AUT.
But, what about the message displayed in the dialog?
The text is not the same.
This you will learn through the Object Identification
feature and the Object Spy in next upcoming slides.

Dani Vainstein & Monika Arora Gautam

29

Understanding object identification



Select the object Spy. From menu : Tools  Object Spy
Or from toolbar as shown below.

Object Spy

Dani Vainstein & Monika Arora Gautam

30

Object Spy




Dani Vainstein & Monika Arora Gautam

Click on the finger point and select the
message in the dialog.

Save a screenshot of the spy in “My
Pictures” and do same for this dialog
and compare properties for both the
messages.

31

Object Spy - Msg

Dani Vainstein & Monika Arora Gautam

32

Comparing



The properties are quite different. The key of the
mystery is the property window id, they are the
same = 65535.

Dani Vainstein & Monika Arora Gautam

33

Understanding The Object Identification


Another look to the repository will show us that the
object is identified by QTP using the native class and
window id, those properties have the same values

 You will see further,

why, this is a very big
advantage.

Dani Vainstein & Monika Arora Gautam

34

Highlight the Dialogs Messages in the
Application




Select the Msg object in the repository and Click the
“highlight in application” button while one of the popups is displayed, see what happens.
One by one do the same for other pop-ups, and see what
happens.

Highlight in application

Dani Vainstein & Monika Arora Gautam

35

Conclusion






Logically, QTP identifies all the messages inside
the same dialog as the only one message.
Imagine you have to map all the different
messages for same instance of dialog in your
AUT. It’s lot of job.
However QTP takes care of it by its Object
Identification and Spy feature.

Dani Vainstein & Monika Arora Gautam

36

Saving the Test



Save The Test.
Every Time you see * near the test name, it means that
the test is not saved. Always remember to save your
work.
Not Saved

Dani Vainstein & Monika Arora Gautam

37

Summary






We have created a new reusable action
guiLogin/guiLogin module
We a created a second new reusable action
guiLogin/CheckDialog
In this session we’ve learned how to map the Login
window and messages dialogs.

Dani Vainstein & Monika Arora Gautam

38

Special Thanks To


Bharathi Babu, India, Pune.



Ayyappa Koppolu, India, Pune.



Paul Grossman, USA, Chicago.



Sumit Singhal, India, Bangalore.



Sanjeev Mathur, India, Noida.



Manasa VN, India, Bangalore.



Prakash Kumar, India, Pune.



Richi Sharma, USA, New Jersey.



Janardhan Kalvakuntla, USA, New England.



Indlamudi Rajesh, India, Mumbai.

 Vainstein
Joydeep
Das,Arora
India,
Hyderabad.
Dani
& Monika
Gautam

39

Make sure to visit us for:






Tutorials
Articles
Projects
And much more

@
www.AdvancedQTP.com

Dani Vainstein & Monika Arora Gautam

40


Slide 11

Login Module

Building the Login GUI Layer Module

1

Topics covered







Create a new test, and classify it as a reusable
action under GUI Layer.
Adding Object to Local Object Repository.
Mapping Dialogs/ Objects.
Smart Identification.
Modify and save Test Settings.

Dani Vainstein & Monika Arora Gautam

2

Before you start…


Before starting the presentation, read about the
following topics in QTP help.






Reusable-Actions
Smart identification.
Action Parameters.
Object Spy.





Test Object Properties.
Run-time Object Properties.

Object Repository.

Dani Vainstein & Monika Arora Gautam

3

Things to Remember…




The Application Under Test (AUT) uses embedded
ActiveX objects, so when you first time open QTP, make
sure to check ActiveX option from Add-in manager.
When QTP is launched, be sure only the ActiveX option
is checked in the add-in manager.

Dani Vainstein & Monika Arora Gautam

4

guiLogin Module
Automation


FR
LIB
RA

Save the current test under
name = “guiLogin” in folder
FR\RA\GL

BL
GL

RS
DOC
DAT
SETTING

guiLogin

TESTS
RES
BATCH
ENV
Dani Vainstein & Monika Arora Gautam

5

guiLogin - Introduction








We are going to create a new Test and
reusable action.
The Test name would be guiLogin, because it
handles the “Login” dialog.
The main action will also called guiLogin. It
will be a reusable action, for further tests.
The guiLogin will receive an input parameter
of string type.

Dani Vainstein & Monika Arora Gautam

6

Modifying the Test Settings - Properties Tab

Description :
The guiLogin Module Stores all the actions required for the login process
Remark : associated add-ins : ActiveX only

Dani Vainstein & Monika Arora Gautam

7

Run Tab
Run one iteration only

Save The Test
Pop up
Message box
Disable Smart Identification
During the run session

Dani Vainstein & Monika Arora Gautam

8

Reusable action






We will create Reusable Action named guiLogin and set
the Action properties.
The guiLogin module ( reusable action ) implements all
the available actions on the Dialog login screen.
The Parameter StepName will be used as an instruction
to the reusable action i.e. “SetData”, “CheckLogo” etc.

Dani Vainstein & Monika Arora Gautam

9

guiLogin Reusable-Action


From Menu  Edit  Action  Action
Properties

Dani Vainstein & Monika Arora Gautam

10

guiLogin - General Tab
Change
Action
Name

Add
Description
Mark
Reusable

Dani Vainstein & Monika Arora Gautam

11

Parameters Tab – Add StepName


Add a new Input Parameter ( Click on + )
Add
StepName
Input
Parameter

Type
String

Dani Vainstein & Monika Arora Gautam

Add
Description

Default
Leave Empty

12

Mapping The Dialog Login







The guiLogin will hold a local repository.
The advantage of the OOT (Object Oriented Testing )
methodology, I think ( and others may disagree with me
) is that by having a reusable action per-screen, you
don’t have to maintain a shared object repository.
Especially when you work within a team, it helps
sparing the locks on the shared working files.
Mapping the application objects – is very important, you
should map your application before you start to “script”

Dani Vainstein & Monika Arora Gautam

13

Adding Objects to Local Repository




Open the Flight Application from Start  All Programs
 QuickTest Professional  Sample Applications 
Flight.
Do not login, just leave the window open.

Dani Vainstein & Monika Arora Gautam

14

Adding Objects to Local Repository





Open the local object repository from
menu  Resources  Object Repository.
Or just type Ctrl+R in QTP application.
QTP will show an hand icon.

Click Add objects in toolbar
Or
Object  Add objects To Local…

Dani Vainstein & Monika Arora Gautam

15

Mapping objects
Point the title-bar of dialog

Click OK
All Objects types

Click OK

Dani Vainstein & Monika Arora Gautam

16

Naming conventions



All the objects will be added to the local repository.
Remove spaces and non-alphanumeric characters from
Object Names.




Change “Agent Name:” to “AgentName”.
Change “Static” to “Logo”.
Remove all names with : (colon ) at the end of the name.

Dani Vainstein & Monika Arora Gautam

17

Why Renaming?











Sometimes there are two blanks instead of one; between two words.
According to my experience, nobody will make a new version for
such a mistake. Their answer ( R&D ) would be
“We will fix it later”.
For QTP this is critical, as it will not identify two spaces instead of
one.
The name “Static” says nothing to you and/or your colleagues, but
with “logo” you have no doubt.
QTP sometimes gives insignificant names to objects i.e. “button_1”
or “button_2”.
It is better to change these, to more descriptive names.
Changing logical names does not effect the QTP object recognition
mechanism.

Dani Vainstein & Monika Arora Gautam

18

Naming conventions

See the logical names
Convention changes

Dani Vainstein & Monika Arora Gautam

19

CheckDialog Reusable Action






We will learn how to check different dialog
messages that share same dialog title “Flight
Reservation”.
We will create a new reusable action inside the
guiLogin module, and we will call it
“CheckDialog”.
I will explain later, the considerations of this
decision.

Dani Vainstein & Monika Arora Gautam

20

Creating a new reusable action




From Menu : Insert  Call to New Action
Type : Hold the ALT key, and type ( I + N )
From toolbar as shown below:

Call to New Action

Dani Vainstein & Monika Arora Gautam

21

Adding a new reusable action
Name : CheckDialog

Description :
Manage all dialog checkpoints
under guiLogin

Reusable Action

Location : At the end of the test

Dani Vainstein & Monika Arora Gautam

22

CheckDialog Created




Now you should have two reusable actions.
Notice the actions listbox ( left ) and the
keyword view ( right ).

Dani Vainstein & Monika Arora Gautam

23

Mapping Dialogs



Move to Expert View Action CheckDialogs.
Open the local repository : Resources  Object
Repository
Or Type CTRL+R



Or from toolbar as shown below:




Object Repository

Dani Vainstein & Monika Arora Gautam

24

Mapping Dialogs






Open the Flight Reservation application if is not opened, and click
OK.
CAUTION : always be aware, specially when adding objects, that
you have only one instance of the AUT open.
What would happen? These child objects would be added under a
new “Dialog_2” parent object and would not be recognized during
playback.

Dani Vainstein & Monika Arora Gautam

25

Map Flight Reservations dialogs


Click OK to get Flight Reservations dialog.

Dani Vainstein & Monika Arora Gautam

26

Naming Conventions





Remove space between “Flight Reservation” and change it
to “FlightReservation".
Change the “static” to “Icon”.
Change “Please enter agent name” to “Msg”.

Dani Vainstein & Monika Arora Gautam

27

Mapping other dialogs?
Return to the same process and add all the objects/
dialog w.r.t. Logging in to Flight Application.
Try to map the following dialogs :







Why these are not added to the repository?

Dani Vainstein & Monika Arora Gautam

28

Mapping dialogs









That’s because all the messages has the same title “Flight
Reservations”.
For QTP all these dialogs are same.
Is it good? Of course! Otherwise you will have to map
every single message in your AUT.
But, what about the message displayed in the dialog?
The text is not the same.
This you will learn through the Object Identification
feature and the Object Spy in next upcoming slides.

Dani Vainstein & Monika Arora Gautam

29

Understanding object identification



Select the object Spy. From menu : Tools  Object Spy
Or from toolbar as shown below.

Object Spy

Dani Vainstein & Monika Arora Gautam

30

Object Spy




Dani Vainstein & Monika Arora Gautam

Click on the finger point and select the
message in the dialog.

Save a screenshot of the spy in “My
Pictures” and do same for this dialog
and compare properties for both the
messages.

31

Object Spy - Msg

Dani Vainstein & Monika Arora Gautam

32

Comparing



The properties are quite different. The key of the
mystery is the property window id, they are the
same = 65535.

Dani Vainstein & Monika Arora Gautam

33

Understanding The Object Identification


Another look to the repository will show us that the
object is identified by QTP using the native class and
window id, those properties have the same values

 You will see further,

why, this is a very big
advantage.

Dani Vainstein & Monika Arora Gautam

34

Highlight the Dialogs Messages in the
Application




Select the Msg object in the repository and Click the
“highlight in application” button while one of the popups is displayed, see what happens.
One by one do the same for other pop-ups, and see what
happens.

Highlight in application

Dani Vainstein & Monika Arora Gautam

35

Conclusion






Logically, QTP identifies all the messages inside
the same dialog as the only one message.
Imagine you have to map all the different
messages for same instance of dialog in your
AUT. It’s lot of job.
However QTP takes care of it by its Object
Identification and Spy feature.

Dani Vainstein & Monika Arora Gautam

36

Saving the Test



Save The Test.
Every Time you see * near the test name, it means that
the test is not saved. Always remember to save your
work.
Not Saved

Dani Vainstein & Monika Arora Gautam

37

Summary






We have created a new reusable action
guiLogin/guiLogin module
We a created a second new reusable action
guiLogin/CheckDialog
In this session we’ve learned how to map the Login
window and messages dialogs.

Dani Vainstein & Monika Arora Gautam

38

Special Thanks To


Bharathi Babu, India, Pune.



Ayyappa Koppolu, India, Pune.



Paul Grossman, USA, Chicago.



Sumit Singhal, India, Bangalore.



Sanjeev Mathur, India, Noida.



Manasa VN, India, Bangalore.



Prakash Kumar, India, Pune.



Richi Sharma, USA, New Jersey.



Janardhan Kalvakuntla, USA, New England.



Indlamudi Rajesh, India, Mumbai.

 Vainstein
Joydeep
Das,Arora
India,
Hyderabad.
Dani
& Monika
Gautam

39

Make sure to visit us for:






Tutorials
Articles
Projects
And much more

@
www.AdvancedQTP.com

Dani Vainstein & Monika Arora Gautam

40


Slide 12

Login Module

Building the Login GUI Layer Module

1

Topics covered







Create a new test, and classify it as a reusable
action under GUI Layer.
Adding Object to Local Object Repository.
Mapping Dialogs/ Objects.
Smart Identification.
Modify and save Test Settings.

Dani Vainstein & Monika Arora Gautam

2

Before you start…


Before starting the presentation, read about the
following topics in QTP help.






Reusable-Actions
Smart identification.
Action Parameters.
Object Spy.





Test Object Properties.
Run-time Object Properties.

Object Repository.

Dani Vainstein & Monika Arora Gautam

3

Things to Remember…




The Application Under Test (AUT) uses embedded
ActiveX objects, so when you first time open QTP, make
sure to check ActiveX option from Add-in manager.
When QTP is launched, be sure only the ActiveX option
is checked in the add-in manager.

Dani Vainstein & Monika Arora Gautam

4

guiLogin Module
Automation


FR
LIB
RA

Save the current test under
name = “guiLogin” in folder
FR\RA\GL

BL
GL

RS
DOC
DAT
SETTING

guiLogin

TESTS
RES
BATCH
ENV
Dani Vainstein & Monika Arora Gautam

5

guiLogin - Introduction








We are going to create a new Test and
reusable action.
The Test name would be guiLogin, because it
handles the “Login” dialog.
The main action will also called guiLogin. It
will be a reusable action, for further tests.
The guiLogin will receive an input parameter
of string type.

Dani Vainstein & Monika Arora Gautam

6

Modifying the Test Settings - Properties Tab

Description :
The guiLogin Module Stores all the actions required for the login process
Remark : associated add-ins : ActiveX only

Dani Vainstein & Monika Arora Gautam

7

Run Tab
Run one iteration only

Save The Test
Pop up
Message box
Disable Smart Identification
During the run session

Dani Vainstein & Monika Arora Gautam

8

Reusable action






We will create Reusable Action named guiLogin and set
the Action properties.
The guiLogin module ( reusable action ) implements all
the available actions on the Dialog login screen.
The Parameter StepName will be used as an instruction
to the reusable action i.e. “SetData”, “CheckLogo” etc.

Dani Vainstein & Monika Arora Gautam

9

guiLogin Reusable-Action


From Menu  Edit  Action  Action
Properties

Dani Vainstein & Monika Arora Gautam

10

guiLogin - General Tab
Change
Action
Name

Add
Description
Mark
Reusable

Dani Vainstein & Monika Arora Gautam

11

Parameters Tab – Add StepName


Add a new Input Parameter ( Click on + )
Add
StepName
Input
Parameter

Type
String

Dani Vainstein & Monika Arora Gautam

Add
Description

Default
Leave Empty

12

Mapping The Dialog Login







The guiLogin will hold a local repository.
The advantage of the OOT (Object Oriented Testing )
methodology, I think ( and others may disagree with me
) is that by having a reusable action per-screen, you
don’t have to maintain a shared object repository.
Especially when you work within a team, it helps
sparing the locks on the shared working files.
Mapping the application objects – is very important, you
should map your application before you start to “script”

Dani Vainstein & Monika Arora Gautam

13

Adding Objects to Local Repository




Open the Flight Application from Start  All Programs
 QuickTest Professional  Sample Applications 
Flight.
Do not login, just leave the window open.

Dani Vainstein & Monika Arora Gautam

14

Adding Objects to Local Repository





Open the local object repository from
menu  Resources  Object Repository.
Or just type Ctrl+R in QTP application.
QTP will show an hand icon.

Click Add objects in toolbar
Or
Object  Add objects To Local…

Dani Vainstein & Monika Arora Gautam

15

Mapping objects
Point the title-bar of dialog

Click OK
All Objects types

Click OK

Dani Vainstein & Monika Arora Gautam

16

Naming conventions



All the objects will be added to the local repository.
Remove spaces and non-alphanumeric characters from
Object Names.




Change “Agent Name:” to “AgentName”.
Change “Static” to “Logo”.
Remove all names with : (colon ) at the end of the name.

Dani Vainstein & Monika Arora Gautam

17

Why Renaming?











Sometimes there are two blanks instead of one; between two words.
According to my experience, nobody will make a new version for
such a mistake. Their answer ( R&D ) would be
“We will fix it later”.
For QTP this is critical, as it will not identify two spaces instead of
one.
The name “Static” says nothing to you and/or your colleagues, but
with “logo” you have no doubt.
QTP sometimes gives insignificant names to objects i.e. “button_1”
or “button_2”.
It is better to change these, to more descriptive names.
Changing logical names does not effect the QTP object recognition
mechanism.

Dani Vainstein & Monika Arora Gautam

18

Naming conventions

See the logical names
Convention changes

Dani Vainstein & Monika Arora Gautam

19

CheckDialog Reusable Action






We will learn how to check different dialog
messages that share same dialog title “Flight
Reservation”.
We will create a new reusable action inside the
guiLogin module, and we will call it
“CheckDialog”.
I will explain later, the considerations of this
decision.

Dani Vainstein & Monika Arora Gautam

20

Creating a new reusable action




From Menu : Insert  Call to New Action
Type : Hold the ALT key, and type ( I + N )
From toolbar as shown below:

Call to New Action

Dani Vainstein & Monika Arora Gautam

21

Adding a new reusable action
Name : CheckDialog

Description :
Manage all dialog checkpoints
under guiLogin

Reusable Action

Location : At the end of the test

Dani Vainstein & Monika Arora Gautam

22

CheckDialog Created




Now you should have two reusable actions.
Notice the actions listbox ( left ) and the
keyword view ( right ).

Dani Vainstein & Monika Arora Gautam

23

Mapping Dialogs



Move to Expert View Action CheckDialogs.
Open the local repository : Resources  Object
Repository
Or Type CTRL+R



Or from toolbar as shown below:




Object Repository

Dani Vainstein & Monika Arora Gautam

24

Mapping Dialogs






Open the Flight Reservation application if is not opened, and click
OK.
CAUTION : always be aware, specially when adding objects, that
you have only one instance of the AUT open.
What would happen? These child objects would be added under a
new “Dialog_2” parent object and would not be recognized during
playback.

Dani Vainstein & Monika Arora Gautam

25

Map Flight Reservations dialogs


Click OK to get Flight Reservations dialog.

Dani Vainstein & Monika Arora Gautam

26

Naming Conventions





Remove space between “Flight Reservation” and change it
to “FlightReservation".
Change the “static” to “Icon”.
Change “Please enter agent name” to “Msg”.

Dani Vainstein & Monika Arora Gautam

27

Mapping other dialogs?
Return to the same process and add all the objects/
dialog w.r.t. Logging in to Flight Application.
Try to map the following dialogs :







Why these are not added to the repository?

Dani Vainstein & Monika Arora Gautam

28

Mapping dialogs









That’s because all the messages has the same title “Flight
Reservations”.
For QTP all these dialogs are same.
Is it good? Of course! Otherwise you will have to map
every single message in your AUT.
But, what about the message displayed in the dialog?
The text is not the same.
This you will learn through the Object Identification
feature and the Object Spy in next upcoming slides.

Dani Vainstein & Monika Arora Gautam

29

Understanding object identification



Select the object Spy. From menu : Tools  Object Spy
Or from toolbar as shown below.

Object Spy

Dani Vainstein & Monika Arora Gautam

30

Object Spy




Dani Vainstein & Monika Arora Gautam

Click on the finger point and select the
message in the dialog.

Save a screenshot of the spy in “My
Pictures” and do same for this dialog
and compare properties for both the
messages.

31

Object Spy - Msg

Dani Vainstein & Monika Arora Gautam

32

Comparing



The properties are quite different. The key of the
mystery is the property window id, they are the
same = 65535.

Dani Vainstein & Monika Arora Gautam

33

Understanding The Object Identification


Another look to the repository will show us that the
object is identified by QTP using the native class and
window id, those properties have the same values

 You will see further,

why, this is a very big
advantage.

Dani Vainstein & Monika Arora Gautam

34

Highlight the Dialogs Messages in the
Application




Select the Msg object in the repository and Click the
“highlight in application” button while one of the popups is displayed, see what happens.
One by one do the same for other pop-ups, and see what
happens.

Highlight in application

Dani Vainstein & Monika Arora Gautam

35

Conclusion






Logically, QTP identifies all the messages inside
the same dialog as the only one message.
Imagine you have to map all the different
messages for same instance of dialog in your
AUT. It’s lot of job.
However QTP takes care of it by its Object
Identification and Spy feature.

Dani Vainstein & Monika Arora Gautam

36

Saving the Test



Save The Test.
Every Time you see * near the test name, it means that
the test is not saved. Always remember to save your
work.
Not Saved

Dani Vainstein & Monika Arora Gautam

37

Summary






We have created a new reusable action
guiLogin/guiLogin module
We a created a second new reusable action
guiLogin/CheckDialog
In this session we’ve learned how to map the Login
window and messages dialogs.

Dani Vainstein & Monika Arora Gautam

38

Special Thanks To


Bharathi Babu, India, Pune.



Ayyappa Koppolu, India, Pune.



Paul Grossman, USA, Chicago.



Sumit Singhal, India, Bangalore.



Sanjeev Mathur, India, Noida.



Manasa VN, India, Bangalore.



Prakash Kumar, India, Pune.



Richi Sharma, USA, New Jersey.



Janardhan Kalvakuntla, USA, New England.



Indlamudi Rajesh, India, Mumbai.

 Vainstein
Joydeep
Das,Arora
India,
Hyderabad.
Dani
& Monika
Gautam

39

Make sure to visit us for:






Tutorials
Articles
Projects
And much more

@
www.AdvancedQTP.com

Dani Vainstein & Monika Arora Gautam

40


Slide 13

Login Module

Building the Login GUI Layer Module

1

Topics covered







Create a new test, and classify it as a reusable
action under GUI Layer.
Adding Object to Local Object Repository.
Mapping Dialogs/ Objects.
Smart Identification.
Modify and save Test Settings.

Dani Vainstein & Monika Arora Gautam

2

Before you start…


Before starting the presentation, read about the
following topics in QTP help.






Reusable-Actions
Smart identification.
Action Parameters.
Object Spy.





Test Object Properties.
Run-time Object Properties.

Object Repository.

Dani Vainstein & Monika Arora Gautam

3

Things to Remember…




The Application Under Test (AUT) uses embedded
ActiveX objects, so when you first time open QTP, make
sure to check ActiveX option from Add-in manager.
When QTP is launched, be sure only the ActiveX option
is checked in the add-in manager.

Dani Vainstein & Monika Arora Gautam

4

guiLogin Module
Automation


FR
LIB
RA

Save the current test under
name = “guiLogin” in folder
FR\RA\GL

BL
GL

RS
DOC
DAT
SETTING

guiLogin

TESTS
RES
BATCH
ENV
Dani Vainstein & Monika Arora Gautam

5

guiLogin - Introduction








We are going to create a new Test and
reusable action.
The Test name would be guiLogin, because it
handles the “Login” dialog.
The main action will also called guiLogin. It
will be a reusable action, for further tests.
The guiLogin will receive an input parameter
of string type.

Dani Vainstein & Monika Arora Gautam

6

Modifying the Test Settings - Properties Tab

Description :
The guiLogin Module Stores all the actions required for the login process
Remark : associated add-ins : ActiveX only

Dani Vainstein & Monika Arora Gautam

7

Run Tab
Run one iteration only

Save The Test
Pop up
Message box
Disable Smart Identification
During the run session

Dani Vainstein & Monika Arora Gautam

8

Reusable action






We will create Reusable Action named guiLogin and set
the Action properties.
The guiLogin module ( reusable action ) implements all
the available actions on the Dialog login screen.
The Parameter StepName will be used as an instruction
to the reusable action i.e. “SetData”, “CheckLogo” etc.

Dani Vainstein & Monika Arora Gautam

9

guiLogin Reusable-Action


From Menu  Edit  Action  Action
Properties

Dani Vainstein & Monika Arora Gautam

10

guiLogin - General Tab
Change
Action
Name

Add
Description
Mark
Reusable

Dani Vainstein & Monika Arora Gautam

11

Parameters Tab – Add StepName


Add a new Input Parameter ( Click on + )
Add
StepName
Input
Parameter

Type
String

Dani Vainstein & Monika Arora Gautam

Add
Description

Default
Leave Empty

12

Mapping The Dialog Login







The guiLogin will hold a local repository.
The advantage of the OOT (Object Oriented Testing )
methodology, I think ( and others may disagree with me
) is that by having a reusable action per-screen, you
don’t have to maintain a shared object repository.
Especially when you work within a team, it helps
sparing the locks on the shared working files.
Mapping the application objects – is very important, you
should map your application before you start to “script”

Dani Vainstein & Monika Arora Gautam

13

Adding Objects to Local Repository




Open the Flight Application from Start  All Programs
 QuickTest Professional  Sample Applications 
Flight.
Do not login, just leave the window open.

Dani Vainstein & Monika Arora Gautam

14

Adding Objects to Local Repository





Open the local object repository from
menu  Resources  Object Repository.
Or just type Ctrl+R in QTP application.
QTP will show an hand icon.

Click Add objects in toolbar
Or
Object  Add objects To Local…

Dani Vainstein & Monika Arora Gautam

15

Mapping objects
Point the title-bar of dialog

Click OK
All Objects types

Click OK

Dani Vainstein & Monika Arora Gautam

16

Naming conventions



All the objects will be added to the local repository.
Remove spaces and non-alphanumeric characters from
Object Names.




Change “Agent Name:” to “AgentName”.
Change “Static” to “Logo”.
Remove all names with : (colon ) at the end of the name.

Dani Vainstein & Monika Arora Gautam

17

Why Renaming?











Sometimes there are two blanks instead of one; between two words.
According to my experience, nobody will make a new version for
such a mistake. Their answer ( R&D ) would be
“We will fix it later”.
For QTP this is critical, as it will not identify two spaces instead of
one.
The name “Static” says nothing to you and/or your colleagues, but
with “logo” you have no doubt.
QTP sometimes gives insignificant names to objects i.e. “button_1”
or “button_2”.
It is better to change these, to more descriptive names.
Changing logical names does not effect the QTP object recognition
mechanism.

Dani Vainstein & Monika Arora Gautam

18

Naming conventions

See the logical names
Convention changes

Dani Vainstein & Monika Arora Gautam

19

CheckDialog Reusable Action






We will learn how to check different dialog
messages that share same dialog title “Flight
Reservation”.
We will create a new reusable action inside the
guiLogin module, and we will call it
“CheckDialog”.
I will explain later, the considerations of this
decision.

Dani Vainstein & Monika Arora Gautam

20

Creating a new reusable action




From Menu : Insert  Call to New Action
Type : Hold the ALT key, and type ( I + N )
From toolbar as shown below:

Call to New Action

Dani Vainstein & Monika Arora Gautam

21

Adding a new reusable action
Name : CheckDialog

Description :
Manage all dialog checkpoints
under guiLogin

Reusable Action

Location : At the end of the test

Dani Vainstein & Monika Arora Gautam

22

CheckDialog Created




Now you should have two reusable actions.
Notice the actions listbox ( left ) and the
keyword view ( right ).

Dani Vainstein & Monika Arora Gautam

23

Mapping Dialogs



Move to Expert View Action CheckDialogs.
Open the local repository : Resources  Object
Repository
Or Type CTRL+R



Or from toolbar as shown below:




Object Repository

Dani Vainstein & Monika Arora Gautam

24

Mapping Dialogs






Open the Flight Reservation application if is not opened, and click
OK.
CAUTION : always be aware, specially when adding objects, that
you have only one instance of the AUT open.
What would happen? These child objects would be added under a
new “Dialog_2” parent object and would not be recognized during
playback.

Dani Vainstein & Monika Arora Gautam

25

Map Flight Reservations dialogs


Click OK to get Flight Reservations dialog.

Dani Vainstein & Monika Arora Gautam

26

Naming Conventions





Remove space between “Flight Reservation” and change it
to “FlightReservation".
Change the “static” to “Icon”.
Change “Please enter agent name” to “Msg”.

Dani Vainstein & Monika Arora Gautam

27

Mapping other dialogs?
Return to the same process and add all the objects/
dialog w.r.t. Logging in to Flight Application.
Try to map the following dialogs :







Why these are not added to the repository?

Dani Vainstein & Monika Arora Gautam

28

Mapping dialogs









That’s because all the messages has the same title “Flight
Reservations”.
For QTP all these dialogs are same.
Is it good? Of course! Otherwise you will have to map
every single message in your AUT.
But, what about the message displayed in the dialog?
The text is not the same.
This you will learn through the Object Identification
feature and the Object Spy in next upcoming slides.

Dani Vainstein & Monika Arora Gautam

29

Understanding object identification



Select the object Spy. From menu : Tools  Object Spy
Or from toolbar as shown below.

Object Spy

Dani Vainstein & Monika Arora Gautam

30

Object Spy




Dani Vainstein & Monika Arora Gautam

Click on the finger point and select the
message in the dialog.

Save a screenshot of the spy in “My
Pictures” and do same for this dialog
and compare properties for both the
messages.

31

Object Spy - Msg

Dani Vainstein & Monika Arora Gautam

32

Comparing



The properties are quite different. The key of the
mystery is the property window id, they are the
same = 65535.

Dani Vainstein & Monika Arora Gautam

33

Understanding The Object Identification


Another look to the repository will show us that the
object is identified by QTP using the native class and
window id, those properties have the same values

 You will see further,

why, this is a very big
advantage.

Dani Vainstein & Monika Arora Gautam

34

Highlight the Dialogs Messages in the
Application




Select the Msg object in the repository and Click the
“highlight in application” button while one of the popups is displayed, see what happens.
One by one do the same for other pop-ups, and see what
happens.

Highlight in application

Dani Vainstein & Monika Arora Gautam

35

Conclusion






Logically, QTP identifies all the messages inside
the same dialog as the only one message.
Imagine you have to map all the different
messages for same instance of dialog in your
AUT. It’s lot of job.
However QTP takes care of it by its Object
Identification and Spy feature.

Dani Vainstein & Monika Arora Gautam

36

Saving the Test



Save The Test.
Every Time you see * near the test name, it means that
the test is not saved. Always remember to save your
work.
Not Saved

Dani Vainstein & Monika Arora Gautam

37

Summary






We have created a new reusable action
guiLogin/guiLogin module
We a created a second new reusable action
guiLogin/CheckDialog
In this session we’ve learned how to map the Login
window and messages dialogs.

Dani Vainstein & Monika Arora Gautam

38

Special Thanks To


Bharathi Babu, India, Pune.



Ayyappa Koppolu, India, Pune.



Paul Grossman, USA, Chicago.



Sumit Singhal, India, Bangalore.



Sanjeev Mathur, India, Noida.



Manasa VN, India, Bangalore.



Prakash Kumar, India, Pune.



Richi Sharma, USA, New Jersey.



Janardhan Kalvakuntla, USA, New England.



Indlamudi Rajesh, India, Mumbai.

 Vainstein
Joydeep
Das,Arora
India,
Hyderabad.
Dani
& Monika
Gautam

39

Make sure to visit us for:






Tutorials
Articles
Projects
And much more

@
www.AdvancedQTP.com

Dani Vainstein & Monika Arora Gautam

40


Slide 14

Login Module

Building the Login GUI Layer Module

1

Topics covered







Create a new test, and classify it as a reusable
action under GUI Layer.
Adding Object to Local Object Repository.
Mapping Dialogs/ Objects.
Smart Identification.
Modify and save Test Settings.

Dani Vainstein & Monika Arora Gautam

2

Before you start…


Before starting the presentation, read about the
following topics in QTP help.






Reusable-Actions
Smart identification.
Action Parameters.
Object Spy.





Test Object Properties.
Run-time Object Properties.

Object Repository.

Dani Vainstein & Monika Arora Gautam

3

Things to Remember…




The Application Under Test (AUT) uses embedded
ActiveX objects, so when you first time open QTP, make
sure to check ActiveX option from Add-in manager.
When QTP is launched, be sure only the ActiveX option
is checked in the add-in manager.

Dani Vainstein & Monika Arora Gautam

4

guiLogin Module
Automation


FR
LIB
RA

Save the current test under
name = “guiLogin” in folder
FR\RA\GL

BL
GL

RS
DOC
DAT
SETTING

guiLogin

TESTS
RES
BATCH
ENV
Dani Vainstein & Monika Arora Gautam

5

guiLogin - Introduction








We are going to create a new Test and
reusable action.
The Test name would be guiLogin, because it
handles the “Login” dialog.
The main action will also called guiLogin. It
will be a reusable action, for further tests.
The guiLogin will receive an input parameter
of string type.

Dani Vainstein & Monika Arora Gautam

6

Modifying the Test Settings - Properties Tab

Description :
The guiLogin Module Stores all the actions required for the login process
Remark : associated add-ins : ActiveX only

Dani Vainstein & Monika Arora Gautam

7

Run Tab
Run one iteration only

Save The Test
Pop up
Message box
Disable Smart Identification
During the run session

Dani Vainstein & Monika Arora Gautam

8

Reusable action






We will create Reusable Action named guiLogin and set
the Action properties.
The guiLogin module ( reusable action ) implements all
the available actions on the Dialog login screen.
The Parameter StepName will be used as an instruction
to the reusable action i.e. “SetData”, “CheckLogo” etc.

Dani Vainstein & Monika Arora Gautam

9

guiLogin Reusable-Action


From Menu  Edit  Action  Action
Properties

Dani Vainstein & Monika Arora Gautam

10

guiLogin - General Tab
Change
Action
Name

Add
Description
Mark
Reusable

Dani Vainstein & Monika Arora Gautam

11

Parameters Tab – Add StepName


Add a new Input Parameter ( Click on + )
Add
StepName
Input
Parameter

Type
String

Dani Vainstein & Monika Arora Gautam

Add
Description

Default
Leave Empty

12

Mapping The Dialog Login







The guiLogin will hold a local repository.
The advantage of the OOT (Object Oriented Testing )
methodology, I think ( and others may disagree with me
) is that by having a reusable action per-screen, you
don’t have to maintain a shared object repository.
Especially when you work within a team, it helps
sparing the locks on the shared working files.
Mapping the application objects – is very important, you
should map your application before you start to “script”

Dani Vainstein & Monika Arora Gautam

13

Adding Objects to Local Repository




Open the Flight Application from Start  All Programs
 QuickTest Professional  Sample Applications 
Flight.
Do not login, just leave the window open.

Dani Vainstein & Monika Arora Gautam

14

Adding Objects to Local Repository





Open the local object repository from
menu  Resources  Object Repository.
Or just type Ctrl+R in QTP application.
QTP will show an hand icon.

Click Add objects in toolbar
Or
Object  Add objects To Local…

Dani Vainstein & Monika Arora Gautam

15

Mapping objects
Point the title-bar of dialog

Click OK
All Objects types

Click OK

Dani Vainstein & Monika Arora Gautam

16

Naming conventions



All the objects will be added to the local repository.
Remove spaces and non-alphanumeric characters from
Object Names.




Change “Agent Name:” to “AgentName”.
Change “Static” to “Logo”.
Remove all names with : (colon ) at the end of the name.

Dani Vainstein & Monika Arora Gautam

17

Why Renaming?











Sometimes there are two blanks instead of one; between two words.
According to my experience, nobody will make a new version for
such a mistake. Their answer ( R&D ) would be
“We will fix it later”.
For QTP this is critical, as it will not identify two spaces instead of
one.
The name “Static” says nothing to you and/or your colleagues, but
with “logo” you have no doubt.
QTP sometimes gives insignificant names to objects i.e. “button_1”
or “button_2”.
It is better to change these, to more descriptive names.
Changing logical names does not effect the QTP object recognition
mechanism.

Dani Vainstein & Monika Arora Gautam

18

Naming conventions

See the logical names
Convention changes

Dani Vainstein & Monika Arora Gautam

19

CheckDialog Reusable Action






We will learn how to check different dialog
messages that share same dialog title “Flight
Reservation”.
We will create a new reusable action inside the
guiLogin module, and we will call it
“CheckDialog”.
I will explain later, the considerations of this
decision.

Dani Vainstein & Monika Arora Gautam

20

Creating a new reusable action




From Menu : Insert  Call to New Action
Type : Hold the ALT key, and type ( I + N )
From toolbar as shown below:

Call to New Action

Dani Vainstein & Monika Arora Gautam

21

Adding a new reusable action
Name : CheckDialog

Description :
Manage all dialog checkpoints
under guiLogin

Reusable Action

Location : At the end of the test

Dani Vainstein & Monika Arora Gautam

22

CheckDialog Created




Now you should have two reusable actions.
Notice the actions listbox ( left ) and the
keyword view ( right ).

Dani Vainstein & Monika Arora Gautam

23

Mapping Dialogs



Move to Expert View Action CheckDialogs.
Open the local repository : Resources  Object
Repository
Or Type CTRL+R



Or from toolbar as shown below:




Object Repository

Dani Vainstein & Monika Arora Gautam

24

Mapping Dialogs






Open the Flight Reservation application if is not opened, and click
OK.
CAUTION : always be aware, specially when adding objects, that
you have only one instance of the AUT open.
What would happen? These child objects would be added under a
new “Dialog_2” parent object and would not be recognized during
playback.

Dani Vainstein & Monika Arora Gautam

25

Map Flight Reservations dialogs


Click OK to get Flight Reservations dialog.

Dani Vainstein & Monika Arora Gautam

26

Naming Conventions





Remove space between “Flight Reservation” and change it
to “FlightReservation".
Change the “static” to “Icon”.
Change “Please enter agent name” to “Msg”.

Dani Vainstein & Monika Arora Gautam

27

Mapping other dialogs?
Return to the same process and add all the objects/
dialog w.r.t. Logging in to Flight Application.
Try to map the following dialogs :







Why these are not added to the repository?

Dani Vainstein & Monika Arora Gautam

28

Mapping dialogs









That’s because all the messages has the same title “Flight
Reservations”.
For QTP all these dialogs are same.
Is it good? Of course! Otherwise you will have to map
every single message in your AUT.
But, what about the message displayed in the dialog?
The text is not the same.
This you will learn through the Object Identification
feature and the Object Spy in next upcoming slides.

Dani Vainstein & Monika Arora Gautam

29

Understanding object identification



Select the object Spy. From menu : Tools  Object Spy
Or from toolbar as shown below.

Object Spy

Dani Vainstein & Monika Arora Gautam

30

Object Spy




Dani Vainstein & Monika Arora Gautam

Click on the finger point and select the
message in the dialog.

Save a screenshot of the spy in “My
Pictures” and do same for this dialog
and compare properties for both the
messages.

31

Object Spy - Msg

Dani Vainstein & Monika Arora Gautam

32

Comparing



The properties are quite different. The key of the
mystery is the property window id, they are the
same = 65535.

Dani Vainstein & Monika Arora Gautam

33

Understanding The Object Identification


Another look to the repository will show us that the
object is identified by QTP using the native class and
window id, those properties have the same values

 You will see further,

why, this is a very big
advantage.

Dani Vainstein & Monika Arora Gautam

34

Highlight the Dialogs Messages in the
Application




Select the Msg object in the repository and Click the
“highlight in application” button while one of the popups is displayed, see what happens.
One by one do the same for other pop-ups, and see what
happens.

Highlight in application

Dani Vainstein & Monika Arora Gautam

35

Conclusion






Logically, QTP identifies all the messages inside
the same dialog as the only one message.
Imagine you have to map all the different
messages for same instance of dialog in your
AUT. It’s lot of job.
However QTP takes care of it by its Object
Identification and Spy feature.

Dani Vainstein & Monika Arora Gautam

36

Saving the Test



Save The Test.
Every Time you see * near the test name, it means that
the test is not saved. Always remember to save your
work.
Not Saved

Dani Vainstein & Monika Arora Gautam

37

Summary






We have created a new reusable action
guiLogin/guiLogin module
We a created a second new reusable action
guiLogin/CheckDialog
In this session we’ve learned how to map the Login
window and messages dialogs.

Dani Vainstein & Monika Arora Gautam

38

Special Thanks To


Bharathi Babu, India, Pune.



Ayyappa Koppolu, India, Pune.



Paul Grossman, USA, Chicago.



Sumit Singhal, India, Bangalore.



Sanjeev Mathur, India, Noida.



Manasa VN, India, Bangalore.



Prakash Kumar, India, Pune.



Richi Sharma, USA, New Jersey.



Janardhan Kalvakuntla, USA, New England.



Indlamudi Rajesh, India, Mumbai.

 Vainstein
Joydeep
Das,Arora
India,
Hyderabad.
Dani
& Monika
Gautam

39

Make sure to visit us for:






Tutorials
Articles
Projects
And much more

@
www.AdvancedQTP.com

Dani Vainstein & Monika Arora Gautam

40


Slide 15

Login Module

Building the Login GUI Layer Module

1

Topics covered







Create a new test, and classify it as a reusable
action under GUI Layer.
Adding Object to Local Object Repository.
Mapping Dialogs/ Objects.
Smart Identification.
Modify and save Test Settings.

Dani Vainstein & Monika Arora Gautam

2

Before you start…


Before starting the presentation, read about the
following topics in QTP help.






Reusable-Actions
Smart identification.
Action Parameters.
Object Spy.





Test Object Properties.
Run-time Object Properties.

Object Repository.

Dani Vainstein & Monika Arora Gautam

3

Things to Remember…




The Application Under Test (AUT) uses embedded
ActiveX objects, so when you first time open QTP, make
sure to check ActiveX option from Add-in manager.
When QTP is launched, be sure only the ActiveX option
is checked in the add-in manager.

Dani Vainstein & Monika Arora Gautam

4

guiLogin Module
Automation


FR
LIB
RA

Save the current test under
name = “guiLogin” in folder
FR\RA\GL

BL
GL

RS
DOC
DAT
SETTING

guiLogin

TESTS
RES
BATCH
ENV
Dani Vainstein & Monika Arora Gautam

5

guiLogin - Introduction








We are going to create a new Test and
reusable action.
The Test name would be guiLogin, because it
handles the “Login” dialog.
The main action will also called guiLogin. It
will be a reusable action, for further tests.
The guiLogin will receive an input parameter
of string type.

Dani Vainstein & Monika Arora Gautam

6

Modifying the Test Settings - Properties Tab

Description :
The guiLogin Module Stores all the actions required for the login process
Remark : associated add-ins : ActiveX only

Dani Vainstein & Monika Arora Gautam

7

Run Tab
Run one iteration only

Save The Test
Pop up
Message box
Disable Smart Identification
During the run session

Dani Vainstein & Monika Arora Gautam

8

Reusable action






We will create Reusable Action named guiLogin and set
the Action properties.
The guiLogin module ( reusable action ) implements all
the available actions on the Dialog login screen.
The Parameter StepName will be used as an instruction
to the reusable action i.e. “SetData”, “CheckLogo” etc.

Dani Vainstein & Monika Arora Gautam

9

guiLogin Reusable-Action


From Menu  Edit  Action  Action
Properties

Dani Vainstein & Monika Arora Gautam

10

guiLogin - General Tab
Change
Action
Name

Add
Description
Mark
Reusable

Dani Vainstein & Monika Arora Gautam

11

Parameters Tab – Add StepName


Add a new Input Parameter ( Click on + )
Add
StepName
Input
Parameter

Type
String

Dani Vainstein & Monika Arora Gautam

Add
Description

Default
Leave Empty

12

Mapping The Dialog Login







The guiLogin will hold a local repository.
The advantage of the OOT (Object Oriented Testing )
methodology, I think ( and others may disagree with me
) is that by having a reusable action per-screen, you
don’t have to maintain a shared object repository.
Especially when you work within a team, it helps
sparing the locks on the shared working files.
Mapping the application objects – is very important, you
should map your application before you start to “script”

Dani Vainstein & Monika Arora Gautam

13

Adding Objects to Local Repository




Open the Flight Application from Start  All Programs
 QuickTest Professional  Sample Applications 
Flight.
Do not login, just leave the window open.

Dani Vainstein & Monika Arora Gautam

14

Adding Objects to Local Repository





Open the local object repository from
menu  Resources  Object Repository.
Or just type Ctrl+R in QTP application.
QTP will show an hand icon.

Click Add objects in toolbar
Or
Object  Add objects To Local…

Dani Vainstein & Monika Arora Gautam

15

Mapping objects
Point the title-bar of dialog

Click OK
All Objects types

Click OK

Dani Vainstein & Monika Arora Gautam

16

Naming conventions



All the objects will be added to the local repository.
Remove spaces and non-alphanumeric characters from
Object Names.




Change “Agent Name:” to “AgentName”.
Change “Static” to “Logo”.
Remove all names with : (colon ) at the end of the name.

Dani Vainstein & Monika Arora Gautam

17

Why Renaming?











Sometimes there are two blanks instead of one; between two words.
According to my experience, nobody will make a new version for
such a mistake. Their answer ( R&D ) would be
“We will fix it later”.
For QTP this is critical, as it will not identify two spaces instead of
one.
The name “Static” says nothing to you and/or your colleagues, but
with “logo” you have no doubt.
QTP sometimes gives insignificant names to objects i.e. “button_1”
or “button_2”.
It is better to change these, to more descriptive names.
Changing logical names does not effect the QTP object recognition
mechanism.

Dani Vainstein & Monika Arora Gautam

18

Naming conventions

See the logical names
Convention changes

Dani Vainstein & Monika Arora Gautam

19

CheckDialog Reusable Action






We will learn how to check different dialog
messages that share same dialog title “Flight
Reservation”.
We will create a new reusable action inside the
guiLogin module, and we will call it
“CheckDialog”.
I will explain later, the considerations of this
decision.

Dani Vainstein & Monika Arora Gautam

20

Creating a new reusable action




From Menu : Insert  Call to New Action
Type : Hold the ALT key, and type ( I + N )
From toolbar as shown below:

Call to New Action

Dani Vainstein & Monika Arora Gautam

21

Adding a new reusable action
Name : CheckDialog

Description :
Manage all dialog checkpoints
under guiLogin

Reusable Action

Location : At the end of the test

Dani Vainstein & Monika Arora Gautam

22

CheckDialog Created




Now you should have two reusable actions.
Notice the actions listbox ( left ) and the
keyword view ( right ).

Dani Vainstein & Monika Arora Gautam

23

Mapping Dialogs



Move to Expert View Action CheckDialogs.
Open the local repository : Resources  Object
Repository
Or Type CTRL+R



Or from toolbar as shown below:




Object Repository

Dani Vainstein & Monika Arora Gautam

24

Mapping Dialogs






Open the Flight Reservation application if is not opened, and click
OK.
CAUTION : always be aware, specially when adding objects, that
you have only one instance of the AUT open.
What would happen? These child objects would be added under a
new “Dialog_2” parent object and would not be recognized during
playback.

Dani Vainstein & Monika Arora Gautam

25

Map Flight Reservations dialogs


Click OK to get Flight Reservations dialog.

Dani Vainstein & Monika Arora Gautam

26

Naming Conventions





Remove space between “Flight Reservation” and change it
to “FlightReservation".
Change the “static” to “Icon”.
Change “Please enter agent name” to “Msg”.

Dani Vainstein & Monika Arora Gautam

27

Mapping other dialogs?
Return to the same process and add all the objects/
dialog w.r.t. Logging in to Flight Application.
Try to map the following dialogs :







Why these are not added to the repository?

Dani Vainstein & Monika Arora Gautam

28

Mapping dialogs









That’s because all the messages has the same title “Flight
Reservations”.
For QTP all these dialogs are same.
Is it good? Of course! Otherwise you will have to map
every single message in your AUT.
But, what about the message displayed in the dialog?
The text is not the same.
This you will learn through the Object Identification
feature and the Object Spy in next upcoming slides.

Dani Vainstein & Monika Arora Gautam

29

Understanding object identification



Select the object Spy. From menu : Tools  Object Spy
Or from toolbar as shown below.

Object Spy

Dani Vainstein & Monika Arora Gautam

30

Object Spy




Dani Vainstein & Monika Arora Gautam

Click on the finger point and select the
message in the dialog.

Save a screenshot of the spy in “My
Pictures” and do same for this dialog
and compare properties for both the
messages.

31

Object Spy - Msg

Dani Vainstein & Monika Arora Gautam

32

Comparing



The properties are quite different. The key of the
mystery is the property window id, they are the
same = 65535.

Dani Vainstein & Monika Arora Gautam

33

Understanding The Object Identification


Another look to the repository will show us that the
object is identified by QTP using the native class and
window id, those properties have the same values

 You will see further,

why, this is a very big
advantage.

Dani Vainstein & Monika Arora Gautam

34

Highlight the Dialogs Messages in the
Application




Select the Msg object in the repository and Click the
“highlight in application” button while one of the popups is displayed, see what happens.
One by one do the same for other pop-ups, and see what
happens.

Highlight in application

Dani Vainstein & Monika Arora Gautam

35

Conclusion






Logically, QTP identifies all the messages inside
the same dialog as the only one message.
Imagine you have to map all the different
messages for same instance of dialog in your
AUT. It’s lot of job.
However QTP takes care of it by its Object
Identification and Spy feature.

Dani Vainstein & Monika Arora Gautam

36

Saving the Test



Save The Test.
Every Time you see * near the test name, it means that
the test is not saved. Always remember to save your
work.
Not Saved

Dani Vainstein & Monika Arora Gautam

37

Summary






We have created a new reusable action
guiLogin/guiLogin module
We a created a second new reusable action
guiLogin/CheckDialog
In this session we’ve learned how to map the Login
window and messages dialogs.

Dani Vainstein & Monika Arora Gautam

38

Special Thanks To


Bharathi Babu, India, Pune.



Ayyappa Koppolu, India, Pune.



Paul Grossman, USA, Chicago.



Sumit Singhal, India, Bangalore.



Sanjeev Mathur, India, Noida.



Manasa VN, India, Bangalore.



Prakash Kumar, India, Pune.



Richi Sharma, USA, New Jersey.



Janardhan Kalvakuntla, USA, New England.



Indlamudi Rajesh, India, Mumbai.

 Vainstein
Joydeep
Das,Arora
India,
Hyderabad.
Dani
& Monika
Gautam

39

Make sure to visit us for:






Tutorials
Articles
Projects
And much more

@
www.AdvancedQTP.com

Dani Vainstein & Monika Arora Gautam

40


Slide 16

Login Module

Building the Login GUI Layer Module

1

Topics covered







Create a new test, and classify it as a reusable
action under GUI Layer.
Adding Object to Local Object Repository.
Mapping Dialogs/ Objects.
Smart Identification.
Modify and save Test Settings.

Dani Vainstein & Monika Arora Gautam

2

Before you start…


Before starting the presentation, read about the
following topics in QTP help.






Reusable-Actions
Smart identification.
Action Parameters.
Object Spy.





Test Object Properties.
Run-time Object Properties.

Object Repository.

Dani Vainstein & Monika Arora Gautam

3

Things to Remember…




The Application Under Test (AUT) uses embedded
ActiveX objects, so when you first time open QTP, make
sure to check ActiveX option from Add-in manager.
When QTP is launched, be sure only the ActiveX option
is checked in the add-in manager.

Dani Vainstein & Monika Arora Gautam

4

guiLogin Module
Automation


FR
LIB
RA

Save the current test under
name = “guiLogin” in folder
FR\RA\GL

BL
GL

RS
DOC
DAT
SETTING

guiLogin

TESTS
RES
BATCH
ENV
Dani Vainstein & Monika Arora Gautam

5

guiLogin - Introduction








We are going to create a new Test and
reusable action.
The Test name would be guiLogin, because it
handles the “Login” dialog.
The main action will also called guiLogin. It
will be a reusable action, for further tests.
The guiLogin will receive an input parameter
of string type.

Dani Vainstein & Monika Arora Gautam

6

Modifying the Test Settings - Properties Tab

Description :
The guiLogin Module Stores all the actions required for the login process
Remark : associated add-ins : ActiveX only

Dani Vainstein & Monika Arora Gautam

7

Run Tab
Run one iteration only

Save The Test
Pop up
Message box
Disable Smart Identification
During the run session

Dani Vainstein & Monika Arora Gautam

8

Reusable action






We will create Reusable Action named guiLogin and set
the Action properties.
The guiLogin module ( reusable action ) implements all
the available actions on the Dialog login screen.
The Parameter StepName will be used as an instruction
to the reusable action i.e. “SetData”, “CheckLogo” etc.

Dani Vainstein & Monika Arora Gautam

9

guiLogin Reusable-Action


From Menu  Edit  Action  Action
Properties

Dani Vainstein & Monika Arora Gautam

10

guiLogin - General Tab
Change
Action
Name

Add
Description
Mark
Reusable

Dani Vainstein & Monika Arora Gautam

11

Parameters Tab – Add StepName


Add a new Input Parameter ( Click on + )
Add
StepName
Input
Parameter

Type
String

Dani Vainstein & Monika Arora Gautam

Add
Description

Default
Leave Empty

12

Mapping The Dialog Login







The guiLogin will hold a local repository.
The advantage of the OOT (Object Oriented Testing )
methodology, I think ( and others may disagree with me
) is that by having a reusable action per-screen, you
don’t have to maintain a shared object repository.
Especially when you work within a team, it helps
sparing the locks on the shared working files.
Mapping the application objects – is very important, you
should map your application before you start to “script”

Dani Vainstein & Monika Arora Gautam

13

Adding Objects to Local Repository




Open the Flight Application from Start  All Programs
 QuickTest Professional  Sample Applications 
Flight.
Do not login, just leave the window open.

Dani Vainstein & Monika Arora Gautam

14

Adding Objects to Local Repository





Open the local object repository from
menu  Resources  Object Repository.
Or just type Ctrl+R in QTP application.
QTP will show an hand icon.

Click Add objects in toolbar
Or
Object  Add objects To Local…

Dani Vainstein & Monika Arora Gautam

15

Mapping objects
Point the title-bar of dialog

Click OK
All Objects types

Click OK

Dani Vainstein & Monika Arora Gautam

16

Naming conventions



All the objects will be added to the local repository.
Remove spaces and non-alphanumeric characters from
Object Names.




Change “Agent Name:” to “AgentName”.
Change “Static” to “Logo”.
Remove all names with : (colon ) at the end of the name.

Dani Vainstein & Monika Arora Gautam

17

Why Renaming?











Sometimes there are two blanks instead of one; between two words.
According to my experience, nobody will make a new version for
such a mistake. Their answer ( R&D ) would be
“We will fix it later”.
For QTP this is critical, as it will not identify two spaces instead of
one.
The name “Static” says nothing to you and/or your colleagues, but
with “logo” you have no doubt.
QTP sometimes gives insignificant names to objects i.e. “button_1”
or “button_2”.
It is better to change these, to more descriptive names.
Changing logical names does not effect the QTP object recognition
mechanism.

Dani Vainstein & Monika Arora Gautam

18

Naming conventions

See the logical names
Convention changes

Dani Vainstein & Monika Arora Gautam

19

CheckDialog Reusable Action






We will learn how to check different dialog
messages that share same dialog title “Flight
Reservation”.
We will create a new reusable action inside the
guiLogin module, and we will call it
“CheckDialog”.
I will explain later, the considerations of this
decision.

Dani Vainstein & Monika Arora Gautam

20

Creating a new reusable action




From Menu : Insert  Call to New Action
Type : Hold the ALT key, and type ( I + N )
From toolbar as shown below:

Call to New Action

Dani Vainstein & Monika Arora Gautam

21

Adding a new reusable action
Name : CheckDialog

Description :
Manage all dialog checkpoints
under guiLogin

Reusable Action

Location : At the end of the test

Dani Vainstein & Monika Arora Gautam

22

CheckDialog Created




Now you should have two reusable actions.
Notice the actions listbox ( left ) and the
keyword view ( right ).

Dani Vainstein & Monika Arora Gautam

23

Mapping Dialogs



Move to Expert View Action CheckDialogs.
Open the local repository : Resources  Object
Repository
Or Type CTRL+R



Or from toolbar as shown below:




Object Repository

Dani Vainstein & Monika Arora Gautam

24

Mapping Dialogs






Open the Flight Reservation application if is not opened, and click
OK.
CAUTION : always be aware, specially when adding objects, that
you have only one instance of the AUT open.
What would happen? These child objects would be added under a
new “Dialog_2” parent object and would not be recognized during
playback.

Dani Vainstein & Monika Arora Gautam

25

Map Flight Reservations dialogs


Click OK to get Flight Reservations dialog.

Dani Vainstein & Monika Arora Gautam

26

Naming Conventions





Remove space between “Flight Reservation” and change it
to “FlightReservation".
Change the “static” to “Icon”.
Change “Please enter agent name” to “Msg”.

Dani Vainstein & Monika Arora Gautam

27

Mapping other dialogs?
Return to the same process and add all the objects/
dialog w.r.t. Logging in to Flight Application.
Try to map the following dialogs :







Why these are not added to the repository?

Dani Vainstein & Monika Arora Gautam

28

Mapping dialogs









That’s because all the messages has the same title “Flight
Reservations”.
For QTP all these dialogs are same.
Is it good? Of course! Otherwise you will have to map
every single message in your AUT.
But, what about the message displayed in the dialog?
The text is not the same.
This you will learn through the Object Identification
feature and the Object Spy in next upcoming slides.

Dani Vainstein & Monika Arora Gautam

29

Understanding object identification



Select the object Spy. From menu : Tools  Object Spy
Or from toolbar as shown below.

Object Spy

Dani Vainstein & Monika Arora Gautam

30

Object Spy




Dani Vainstein & Monika Arora Gautam

Click on the finger point and select the
message in the dialog.

Save a screenshot of the spy in “My
Pictures” and do same for this dialog
and compare properties for both the
messages.

31

Object Spy - Msg

Dani Vainstein & Monika Arora Gautam

32

Comparing



The properties are quite different. The key of the
mystery is the property window id, they are the
same = 65535.

Dani Vainstein & Monika Arora Gautam

33

Understanding The Object Identification


Another look to the repository will show us that the
object is identified by QTP using the native class and
window id, those properties have the same values

 You will see further,

why, this is a very big
advantage.

Dani Vainstein & Monika Arora Gautam

34

Highlight the Dialogs Messages in the
Application




Select the Msg object in the repository and Click the
“highlight in application” button while one of the popups is displayed, see what happens.
One by one do the same for other pop-ups, and see what
happens.

Highlight in application

Dani Vainstein & Monika Arora Gautam

35

Conclusion






Logically, QTP identifies all the messages inside
the same dialog as the only one message.
Imagine you have to map all the different
messages for same instance of dialog in your
AUT. It’s lot of job.
However QTP takes care of it by its Object
Identification and Spy feature.

Dani Vainstein & Monika Arora Gautam

36

Saving the Test



Save The Test.
Every Time you see * near the test name, it means that
the test is not saved. Always remember to save your
work.
Not Saved

Dani Vainstein & Monika Arora Gautam

37

Summary






We have created a new reusable action
guiLogin/guiLogin module
We a created a second new reusable action
guiLogin/CheckDialog
In this session we’ve learned how to map the Login
window and messages dialogs.

Dani Vainstein & Monika Arora Gautam

38

Special Thanks To


Bharathi Babu, India, Pune.



Ayyappa Koppolu, India, Pune.



Paul Grossman, USA, Chicago.



Sumit Singhal, India, Bangalore.



Sanjeev Mathur, India, Noida.



Manasa VN, India, Bangalore.



Prakash Kumar, India, Pune.



Richi Sharma, USA, New Jersey.



Janardhan Kalvakuntla, USA, New England.



Indlamudi Rajesh, India, Mumbai.

 Vainstein
Joydeep
Das,Arora
India,
Hyderabad.
Dani
& Monika
Gautam

39

Make sure to visit us for:






Tutorials
Articles
Projects
And much more

@
www.AdvancedQTP.com

Dani Vainstein & Monika Arora Gautam

40


Slide 17

Login Module

Building the Login GUI Layer Module

1

Topics covered







Create a new test, and classify it as a reusable
action under GUI Layer.
Adding Object to Local Object Repository.
Mapping Dialogs/ Objects.
Smart Identification.
Modify and save Test Settings.

Dani Vainstein & Monika Arora Gautam

2

Before you start…


Before starting the presentation, read about the
following topics in QTP help.






Reusable-Actions
Smart identification.
Action Parameters.
Object Spy.





Test Object Properties.
Run-time Object Properties.

Object Repository.

Dani Vainstein & Monika Arora Gautam

3

Things to Remember…




The Application Under Test (AUT) uses embedded
ActiveX objects, so when you first time open QTP, make
sure to check ActiveX option from Add-in manager.
When QTP is launched, be sure only the ActiveX option
is checked in the add-in manager.

Dani Vainstein & Monika Arora Gautam

4

guiLogin Module
Automation


FR
LIB
RA

Save the current test under
name = “guiLogin” in folder
FR\RA\GL

BL
GL

RS
DOC
DAT
SETTING

guiLogin

TESTS
RES
BATCH
ENV
Dani Vainstein & Monika Arora Gautam

5

guiLogin - Introduction








We are going to create a new Test and
reusable action.
The Test name would be guiLogin, because it
handles the “Login” dialog.
The main action will also called guiLogin. It
will be a reusable action, for further tests.
The guiLogin will receive an input parameter
of string type.

Dani Vainstein & Monika Arora Gautam

6

Modifying the Test Settings - Properties Tab

Description :
The guiLogin Module Stores all the actions required for the login process
Remark : associated add-ins : ActiveX only

Dani Vainstein & Monika Arora Gautam

7

Run Tab
Run one iteration only

Save The Test
Pop up
Message box
Disable Smart Identification
During the run session

Dani Vainstein & Monika Arora Gautam

8

Reusable action






We will create Reusable Action named guiLogin and set
the Action properties.
The guiLogin module ( reusable action ) implements all
the available actions on the Dialog login screen.
The Parameter StepName will be used as an instruction
to the reusable action i.e. “SetData”, “CheckLogo” etc.

Dani Vainstein & Monika Arora Gautam

9

guiLogin Reusable-Action


From Menu  Edit  Action  Action
Properties

Dani Vainstein & Monika Arora Gautam

10

guiLogin - General Tab
Change
Action
Name

Add
Description
Mark
Reusable

Dani Vainstein & Monika Arora Gautam

11

Parameters Tab – Add StepName


Add a new Input Parameter ( Click on + )
Add
StepName
Input
Parameter

Type
String

Dani Vainstein & Monika Arora Gautam

Add
Description

Default
Leave Empty

12

Mapping The Dialog Login







The guiLogin will hold a local repository.
The advantage of the OOT (Object Oriented Testing )
methodology, I think ( and others may disagree with me
) is that by having a reusable action per-screen, you
don’t have to maintain a shared object repository.
Especially when you work within a team, it helps
sparing the locks on the shared working files.
Mapping the application objects – is very important, you
should map your application before you start to “script”

Dani Vainstein & Monika Arora Gautam

13

Adding Objects to Local Repository




Open the Flight Application from Start  All Programs
 QuickTest Professional  Sample Applications 
Flight.
Do not login, just leave the window open.

Dani Vainstein & Monika Arora Gautam

14

Adding Objects to Local Repository





Open the local object repository from
menu  Resources  Object Repository.
Or just type Ctrl+R in QTP application.
QTP will show an hand icon.

Click Add objects in toolbar
Or
Object  Add objects To Local…

Dani Vainstein & Monika Arora Gautam

15

Mapping objects
Point the title-bar of dialog

Click OK
All Objects types

Click OK

Dani Vainstein & Monika Arora Gautam

16

Naming conventions



All the objects will be added to the local repository.
Remove spaces and non-alphanumeric characters from
Object Names.




Change “Agent Name:” to “AgentName”.
Change “Static” to “Logo”.
Remove all names with : (colon ) at the end of the name.

Dani Vainstein & Monika Arora Gautam

17

Why Renaming?











Sometimes there are two blanks instead of one; between two words.
According to my experience, nobody will make a new version for
such a mistake. Their answer ( R&D ) would be
“We will fix it later”.
For QTP this is critical, as it will not identify two spaces instead of
one.
The name “Static” says nothing to you and/or your colleagues, but
with “logo” you have no doubt.
QTP sometimes gives insignificant names to objects i.e. “button_1”
or “button_2”.
It is better to change these, to more descriptive names.
Changing logical names does not effect the QTP object recognition
mechanism.

Dani Vainstein & Monika Arora Gautam

18

Naming conventions

See the logical names
Convention changes

Dani Vainstein & Monika Arora Gautam

19

CheckDialog Reusable Action






We will learn how to check different dialog
messages that share same dialog title “Flight
Reservation”.
We will create a new reusable action inside the
guiLogin module, and we will call it
“CheckDialog”.
I will explain later, the considerations of this
decision.

Dani Vainstein & Monika Arora Gautam

20

Creating a new reusable action




From Menu : Insert  Call to New Action
Type : Hold the ALT key, and type ( I + N )
From toolbar as shown below:

Call to New Action

Dani Vainstein & Monika Arora Gautam

21

Adding a new reusable action
Name : CheckDialog

Description :
Manage all dialog checkpoints
under guiLogin

Reusable Action

Location : At the end of the test

Dani Vainstein & Monika Arora Gautam

22

CheckDialog Created




Now you should have two reusable actions.
Notice the actions listbox ( left ) and the
keyword view ( right ).

Dani Vainstein & Monika Arora Gautam

23

Mapping Dialogs



Move to Expert View Action CheckDialogs.
Open the local repository : Resources  Object
Repository
Or Type CTRL+R



Or from toolbar as shown below:




Object Repository

Dani Vainstein & Monika Arora Gautam

24

Mapping Dialogs






Open the Flight Reservation application if is not opened, and click
OK.
CAUTION : always be aware, specially when adding objects, that
you have only one instance of the AUT open.
What would happen? These child objects would be added under a
new “Dialog_2” parent object and would not be recognized during
playback.

Dani Vainstein & Monika Arora Gautam

25

Map Flight Reservations dialogs


Click OK to get Flight Reservations dialog.

Dani Vainstein & Monika Arora Gautam

26

Naming Conventions





Remove space between “Flight Reservation” and change it
to “FlightReservation".
Change the “static” to “Icon”.
Change “Please enter agent name” to “Msg”.

Dani Vainstein & Monika Arora Gautam

27

Mapping other dialogs?
Return to the same process and add all the objects/
dialog w.r.t. Logging in to Flight Application.
Try to map the following dialogs :







Why these are not added to the repository?

Dani Vainstein & Monika Arora Gautam

28

Mapping dialogs









That’s because all the messages has the same title “Flight
Reservations”.
For QTP all these dialogs are same.
Is it good? Of course! Otherwise you will have to map
every single message in your AUT.
But, what about the message displayed in the dialog?
The text is not the same.
This you will learn through the Object Identification
feature and the Object Spy in next upcoming slides.

Dani Vainstein & Monika Arora Gautam

29

Understanding object identification



Select the object Spy. From menu : Tools  Object Spy
Or from toolbar as shown below.

Object Spy

Dani Vainstein & Monika Arora Gautam

30

Object Spy




Dani Vainstein & Monika Arora Gautam

Click on the finger point and select the
message in the dialog.

Save a screenshot of the spy in “My
Pictures” and do same for this dialog
and compare properties for both the
messages.

31

Object Spy - Msg

Dani Vainstein & Monika Arora Gautam

32

Comparing



The properties are quite different. The key of the
mystery is the property window id, they are the
same = 65535.

Dani Vainstein & Monika Arora Gautam

33

Understanding The Object Identification


Another look to the repository will show us that the
object is identified by QTP using the native class and
window id, those properties have the same values

 You will see further,

why, this is a very big
advantage.

Dani Vainstein & Monika Arora Gautam

34

Highlight the Dialogs Messages in the
Application




Select the Msg object in the repository and Click the
“highlight in application” button while one of the popups is displayed, see what happens.
One by one do the same for other pop-ups, and see what
happens.

Highlight in application

Dani Vainstein & Monika Arora Gautam

35

Conclusion






Logically, QTP identifies all the messages inside
the same dialog as the only one message.
Imagine you have to map all the different
messages for same instance of dialog in your
AUT. It’s lot of job.
However QTP takes care of it by its Object
Identification and Spy feature.

Dani Vainstein & Monika Arora Gautam

36

Saving the Test



Save The Test.
Every Time you see * near the test name, it means that
the test is not saved. Always remember to save your
work.
Not Saved

Dani Vainstein & Monika Arora Gautam

37

Summary






We have created a new reusable action
guiLogin/guiLogin module
We a created a second new reusable action
guiLogin/CheckDialog
In this session we’ve learned how to map the Login
window and messages dialogs.

Dani Vainstein & Monika Arora Gautam

38

Special Thanks To


Bharathi Babu, India, Pune.



Ayyappa Koppolu, India, Pune.



Paul Grossman, USA, Chicago.



Sumit Singhal, India, Bangalore.



Sanjeev Mathur, India, Noida.



Manasa VN, India, Bangalore.



Prakash Kumar, India, Pune.



Richi Sharma, USA, New Jersey.



Janardhan Kalvakuntla, USA, New England.



Indlamudi Rajesh, India, Mumbai.

 Vainstein
Joydeep
Das,Arora
India,
Hyderabad.
Dani
& Monika
Gautam

39

Make sure to visit us for:






Tutorials
Articles
Projects
And much more

@
www.AdvancedQTP.com

Dani Vainstein & Monika Arora Gautam

40


Slide 18

Login Module

Building the Login GUI Layer Module

1

Topics covered







Create a new test, and classify it as a reusable
action under GUI Layer.
Adding Object to Local Object Repository.
Mapping Dialogs/ Objects.
Smart Identification.
Modify and save Test Settings.

Dani Vainstein & Monika Arora Gautam

2

Before you start…


Before starting the presentation, read about the
following topics in QTP help.






Reusable-Actions
Smart identification.
Action Parameters.
Object Spy.





Test Object Properties.
Run-time Object Properties.

Object Repository.

Dani Vainstein & Monika Arora Gautam

3

Things to Remember…




The Application Under Test (AUT) uses embedded
ActiveX objects, so when you first time open QTP, make
sure to check ActiveX option from Add-in manager.
When QTP is launched, be sure only the ActiveX option
is checked in the add-in manager.

Dani Vainstein & Monika Arora Gautam

4

guiLogin Module
Automation


FR
LIB
RA

Save the current test under
name = “guiLogin” in folder
FR\RA\GL

BL
GL

RS
DOC
DAT
SETTING

guiLogin

TESTS
RES
BATCH
ENV
Dani Vainstein & Monika Arora Gautam

5

guiLogin - Introduction








We are going to create a new Test and
reusable action.
The Test name would be guiLogin, because it
handles the “Login” dialog.
The main action will also called guiLogin. It
will be a reusable action, for further tests.
The guiLogin will receive an input parameter
of string type.

Dani Vainstein & Monika Arora Gautam

6

Modifying the Test Settings - Properties Tab

Description :
The guiLogin Module Stores all the actions required for the login process
Remark : associated add-ins : ActiveX only

Dani Vainstein & Monika Arora Gautam

7

Run Tab
Run one iteration only

Save The Test
Pop up
Message box
Disable Smart Identification
During the run session

Dani Vainstein & Monika Arora Gautam

8

Reusable action






We will create Reusable Action named guiLogin and set
the Action properties.
The guiLogin module ( reusable action ) implements all
the available actions on the Dialog login screen.
The Parameter StepName will be used as an instruction
to the reusable action i.e. “SetData”, “CheckLogo” etc.

Dani Vainstein & Monika Arora Gautam

9

guiLogin Reusable-Action


From Menu  Edit  Action  Action
Properties

Dani Vainstein & Monika Arora Gautam

10

guiLogin - General Tab
Change
Action
Name

Add
Description
Mark
Reusable

Dani Vainstein & Monika Arora Gautam

11

Parameters Tab – Add StepName


Add a new Input Parameter ( Click on + )
Add
StepName
Input
Parameter

Type
String

Dani Vainstein & Monika Arora Gautam

Add
Description

Default
Leave Empty

12

Mapping The Dialog Login







The guiLogin will hold a local repository.
The advantage of the OOT (Object Oriented Testing )
methodology, I think ( and others may disagree with me
) is that by having a reusable action per-screen, you
don’t have to maintain a shared object repository.
Especially when you work within a team, it helps
sparing the locks on the shared working files.
Mapping the application objects – is very important, you
should map your application before you start to “script”

Dani Vainstein & Monika Arora Gautam

13

Adding Objects to Local Repository




Open the Flight Application from Start  All Programs
 QuickTest Professional  Sample Applications 
Flight.
Do not login, just leave the window open.

Dani Vainstein & Monika Arora Gautam

14

Adding Objects to Local Repository





Open the local object repository from
menu  Resources  Object Repository.
Or just type Ctrl+R in QTP application.
QTP will show an hand icon.

Click Add objects in toolbar
Or
Object  Add objects To Local…

Dani Vainstein & Monika Arora Gautam

15

Mapping objects
Point the title-bar of dialog

Click OK
All Objects types

Click OK

Dani Vainstein & Monika Arora Gautam

16

Naming conventions



All the objects will be added to the local repository.
Remove spaces and non-alphanumeric characters from
Object Names.




Change “Agent Name:” to “AgentName”.
Change “Static” to “Logo”.
Remove all names with : (colon ) at the end of the name.

Dani Vainstein & Monika Arora Gautam

17

Why Renaming?











Sometimes there are two blanks instead of one; between two words.
According to my experience, nobody will make a new version for
such a mistake. Their answer ( R&D ) would be
“We will fix it later”.
For QTP this is critical, as it will not identify two spaces instead of
one.
The name “Static” says nothing to you and/or your colleagues, but
with “logo” you have no doubt.
QTP sometimes gives insignificant names to objects i.e. “button_1”
or “button_2”.
It is better to change these, to more descriptive names.
Changing logical names does not effect the QTP object recognition
mechanism.

Dani Vainstein & Monika Arora Gautam

18

Naming conventions

See the logical names
Convention changes

Dani Vainstein & Monika Arora Gautam

19

CheckDialog Reusable Action






We will learn how to check different dialog
messages that share same dialog title “Flight
Reservation”.
We will create a new reusable action inside the
guiLogin module, and we will call it
“CheckDialog”.
I will explain later, the considerations of this
decision.

Dani Vainstein & Monika Arora Gautam

20

Creating a new reusable action




From Menu : Insert  Call to New Action
Type : Hold the ALT key, and type ( I + N )
From toolbar as shown below:

Call to New Action

Dani Vainstein & Monika Arora Gautam

21

Adding a new reusable action
Name : CheckDialog

Description :
Manage all dialog checkpoints
under guiLogin

Reusable Action

Location : At the end of the test

Dani Vainstein & Monika Arora Gautam

22

CheckDialog Created




Now you should have two reusable actions.
Notice the actions listbox ( left ) and the
keyword view ( right ).

Dani Vainstein & Monika Arora Gautam

23

Mapping Dialogs



Move to Expert View Action CheckDialogs.
Open the local repository : Resources  Object
Repository
Or Type CTRL+R



Or from toolbar as shown below:




Object Repository

Dani Vainstein & Monika Arora Gautam

24

Mapping Dialogs






Open the Flight Reservation application if is not opened, and click
OK.
CAUTION : always be aware, specially when adding objects, that
you have only one instance of the AUT open.
What would happen? These child objects would be added under a
new “Dialog_2” parent object and would not be recognized during
playback.

Dani Vainstein & Monika Arora Gautam

25

Map Flight Reservations dialogs


Click OK to get Flight Reservations dialog.

Dani Vainstein & Monika Arora Gautam

26

Naming Conventions





Remove space between “Flight Reservation” and change it
to “FlightReservation".
Change the “static” to “Icon”.
Change “Please enter agent name” to “Msg”.

Dani Vainstein & Monika Arora Gautam

27

Mapping other dialogs?
Return to the same process and add all the objects/
dialog w.r.t. Logging in to Flight Application.
Try to map the following dialogs :







Why these are not added to the repository?

Dani Vainstein & Monika Arora Gautam

28

Mapping dialogs









That’s because all the messages has the same title “Flight
Reservations”.
For QTP all these dialogs are same.
Is it good? Of course! Otherwise you will have to map
every single message in your AUT.
But, what about the message displayed in the dialog?
The text is not the same.
This you will learn through the Object Identification
feature and the Object Spy in next upcoming slides.

Dani Vainstein & Monika Arora Gautam

29

Understanding object identification



Select the object Spy. From menu : Tools  Object Spy
Or from toolbar as shown below.

Object Spy

Dani Vainstein & Monika Arora Gautam

30

Object Spy




Dani Vainstein & Monika Arora Gautam

Click on the finger point and select the
message in the dialog.

Save a screenshot of the spy in “My
Pictures” and do same for this dialog
and compare properties for both the
messages.

31

Object Spy - Msg

Dani Vainstein & Monika Arora Gautam

32

Comparing



The properties are quite different. The key of the
mystery is the property window id, they are the
same = 65535.

Dani Vainstein & Monika Arora Gautam

33

Understanding The Object Identification


Another look to the repository will show us that the
object is identified by QTP using the native class and
window id, those properties have the same values

 You will see further,

why, this is a very big
advantage.

Dani Vainstein & Monika Arora Gautam

34

Highlight the Dialogs Messages in the
Application




Select the Msg object in the repository and Click the
“highlight in application” button while one of the popups is displayed, see what happens.
One by one do the same for other pop-ups, and see what
happens.

Highlight in application

Dani Vainstein & Monika Arora Gautam

35

Conclusion






Logically, QTP identifies all the messages inside
the same dialog as the only one message.
Imagine you have to map all the different
messages for same instance of dialog in your
AUT. It’s lot of job.
However QTP takes care of it by its Object
Identification and Spy feature.

Dani Vainstein & Monika Arora Gautam

36

Saving the Test



Save The Test.
Every Time you see * near the test name, it means that
the test is not saved. Always remember to save your
work.
Not Saved

Dani Vainstein & Monika Arora Gautam

37

Summary






We have created a new reusable action
guiLogin/guiLogin module
We a created a second new reusable action
guiLogin/CheckDialog
In this session we’ve learned how to map the Login
window and messages dialogs.

Dani Vainstein & Monika Arora Gautam

38

Special Thanks To


Bharathi Babu, India, Pune.



Ayyappa Koppolu, India, Pune.



Paul Grossman, USA, Chicago.



Sumit Singhal, India, Bangalore.



Sanjeev Mathur, India, Noida.



Manasa VN, India, Bangalore.



Prakash Kumar, India, Pune.



Richi Sharma, USA, New Jersey.



Janardhan Kalvakuntla, USA, New England.



Indlamudi Rajesh, India, Mumbai.

 Vainstein
Joydeep
Das,Arora
India,
Hyderabad.
Dani
& Monika
Gautam

39

Make sure to visit us for:






Tutorials
Articles
Projects
And much more

@
www.AdvancedQTP.com

Dani Vainstein & Monika Arora Gautam

40


Slide 19

Login Module

Building the Login GUI Layer Module

1

Topics covered







Create a new test, and classify it as a reusable
action under GUI Layer.
Adding Object to Local Object Repository.
Mapping Dialogs/ Objects.
Smart Identification.
Modify and save Test Settings.

Dani Vainstein & Monika Arora Gautam

2

Before you start…


Before starting the presentation, read about the
following topics in QTP help.






Reusable-Actions
Smart identification.
Action Parameters.
Object Spy.





Test Object Properties.
Run-time Object Properties.

Object Repository.

Dani Vainstein & Monika Arora Gautam

3

Things to Remember…




The Application Under Test (AUT) uses embedded
ActiveX objects, so when you first time open QTP, make
sure to check ActiveX option from Add-in manager.
When QTP is launched, be sure only the ActiveX option
is checked in the add-in manager.

Dani Vainstein & Monika Arora Gautam

4

guiLogin Module
Automation


FR
LIB
RA

Save the current test under
name = “guiLogin” in folder
FR\RA\GL

BL
GL

RS
DOC
DAT
SETTING

guiLogin

TESTS
RES
BATCH
ENV
Dani Vainstein & Monika Arora Gautam

5

guiLogin - Introduction








We are going to create a new Test and
reusable action.
The Test name would be guiLogin, because it
handles the “Login” dialog.
The main action will also called guiLogin. It
will be a reusable action, for further tests.
The guiLogin will receive an input parameter
of string type.

Dani Vainstein & Monika Arora Gautam

6

Modifying the Test Settings - Properties Tab

Description :
The guiLogin Module Stores all the actions required for the login process
Remark : associated add-ins : ActiveX only

Dani Vainstein & Monika Arora Gautam

7

Run Tab
Run one iteration only

Save The Test
Pop up
Message box
Disable Smart Identification
During the run session

Dani Vainstein & Monika Arora Gautam

8

Reusable action






We will create Reusable Action named guiLogin and set
the Action properties.
The guiLogin module ( reusable action ) implements all
the available actions on the Dialog login screen.
The Parameter StepName will be used as an instruction
to the reusable action i.e. “SetData”, “CheckLogo” etc.

Dani Vainstein & Monika Arora Gautam

9

guiLogin Reusable-Action


From Menu  Edit  Action  Action
Properties

Dani Vainstein & Monika Arora Gautam

10

guiLogin - General Tab
Change
Action
Name

Add
Description
Mark
Reusable

Dani Vainstein & Monika Arora Gautam

11

Parameters Tab – Add StepName


Add a new Input Parameter ( Click on + )
Add
StepName
Input
Parameter

Type
String

Dani Vainstein & Monika Arora Gautam

Add
Description

Default
Leave Empty

12

Mapping The Dialog Login







The guiLogin will hold a local repository.
The advantage of the OOT (Object Oriented Testing )
methodology, I think ( and others may disagree with me
) is that by having a reusable action per-screen, you
don’t have to maintain a shared object repository.
Especially when you work within a team, it helps
sparing the locks on the shared working files.
Mapping the application objects – is very important, you
should map your application before you start to “script”

Dani Vainstein & Monika Arora Gautam

13

Adding Objects to Local Repository




Open the Flight Application from Start  All Programs
 QuickTest Professional  Sample Applications 
Flight.
Do not login, just leave the window open.

Dani Vainstein & Monika Arora Gautam

14

Adding Objects to Local Repository





Open the local object repository from
menu  Resources  Object Repository.
Or just type Ctrl+R in QTP application.
QTP will show an hand icon.

Click Add objects in toolbar
Or
Object  Add objects To Local…

Dani Vainstein & Monika Arora Gautam

15

Mapping objects
Point the title-bar of dialog

Click OK
All Objects types

Click OK

Dani Vainstein & Monika Arora Gautam

16

Naming conventions



All the objects will be added to the local repository.
Remove spaces and non-alphanumeric characters from
Object Names.




Change “Agent Name:” to “AgentName”.
Change “Static” to “Logo”.
Remove all names with : (colon ) at the end of the name.

Dani Vainstein & Monika Arora Gautam

17

Why Renaming?











Sometimes there are two blanks instead of one; between two words.
According to my experience, nobody will make a new version for
such a mistake. Their answer ( R&D ) would be
“We will fix it later”.
For QTP this is critical, as it will not identify two spaces instead of
one.
The name “Static” says nothing to you and/or your colleagues, but
with “logo” you have no doubt.
QTP sometimes gives insignificant names to objects i.e. “button_1”
or “button_2”.
It is better to change these, to more descriptive names.
Changing logical names does not effect the QTP object recognition
mechanism.

Dani Vainstein & Monika Arora Gautam

18

Naming conventions

See the logical names
Convention changes

Dani Vainstein & Monika Arora Gautam

19

CheckDialog Reusable Action






We will learn how to check different dialog
messages that share same dialog title “Flight
Reservation”.
We will create a new reusable action inside the
guiLogin module, and we will call it
“CheckDialog”.
I will explain later, the considerations of this
decision.

Dani Vainstein & Monika Arora Gautam

20

Creating a new reusable action




From Menu : Insert  Call to New Action
Type : Hold the ALT key, and type ( I + N )
From toolbar as shown below:

Call to New Action

Dani Vainstein & Monika Arora Gautam

21

Adding a new reusable action
Name : CheckDialog

Description :
Manage all dialog checkpoints
under guiLogin

Reusable Action

Location : At the end of the test

Dani Vainstein & Monika Arora Gautam

22

CheckDialog Created




Now you should have two reusable actions.
Notice the actions listbox ( left ) and the
keyword view ( right ).

Dani Vainstein & Monika Arora Gautam

23

Mapping Dialogs



Move to Expert View Action CheckDialogs.
Open the local repository : Resources  Object
Repository
Or Type CTRL+R



Or from toolbar as shown below:




Object Repository

Dani Vainstein & Monika Arora Gautam

24

Mapping Dialogs






Open the Flight Reservation application if is not opened, and click
OK.
CAUTION : always be aware, specially when adding objects, that
you have only one instance of the AUT open.
What would happen? These child objects would be added under a
new “Dialog_2” parent object and would not be recognized during
playback.

Dani Vainstein & Monika Arora Gautam

25

Map Flight Reservations dialogs


Click OK to get Flight Reservations dialog.

Dani Vainstein & Monika Arora Gautam

26

Naming Conventions





Remove space between “Flight Reservation” and change it
to “FlightReservation".
Change the “static” to “Icon”.
Change “Please enter agent name” to “Msg”.

Dani Vainstein & Monika Arora Gautam

27

Mapping other dialogs?
Return to the same process and add all the objects/
dialog w.r.t. Logging in to Flight Application.
Try to map the following dialogs :







Why these are not added to the repository?

Dani Vainstein & Monika Arora Gautam

28

Mapping dialogs









That’s because all the messages has the same title “Flight
Reservations”.
For QTP all these dialogs are same.
Is it good? Of course! Otherwise you will have to map
every single message in your AUT.
But, what about the message displayed in the dialog?
The text is not the same.
This you will learn through the Object Identification
feature and the Object Spy in next upcoming slides.

Dani Vainstein & Monika Arora Gautam

29

Understanding object identification



Select the object Spy. From menu : Tools  Object Spy
Or from toolbar as shown below.

Object Spy

Dani Vainstein & Monika Arora Gautam

30

Object Spy




Dani Vainstein & Monika Arora Gautam

Click on the finger point and select the
message in the dialog.

Save a screenshot of the spy in “My
Pictures” and do same for this dialog
and compare properties for both the
messages.

31

Object Spy - Msg

Dani Vainstein & Monika Arora Gautam

32

Comparing



The properties are quite different. The key of the
mystery is the property window id, they are the
same = 65535.

Dani Vainstein & Monika Arora Gautam

33

Understanding The Object Identification


Another look to the repository will show us that the
object is identified by QTP using the native class and
window id, those properties have the same values

 You will see further,

why, this is a very big
advantage.

Dani Vainstein & Monika Arora Gautam

34

Highlight the Dialogs Messages in the
Application




Select the Msg object in the repository and Click the
“highlight in application” button while one of the popups is displayed, see what happens.
One by one do the same for other pop-ups, and see what
happens.

Highlight in application

Dani Vainstein & Monika Arora Gautam

35

Conclusion






Logically, QTP identifies all the messages inside
the same dialog as the only one message.
Imagine you have to map all the different
messages for same instance of dialog in your
AUT. It’s lot of job.
However QTP takes care of it by its Object
Identification and Spy feature.

Dani Vainstein & Monika Arora Gautam

36

Saving the Test



Save The Test.
Every Time you see * near the test name, it means that
the test is not saved. Always remember to save your
work.
Not Saved

Dani Vainstein & Monika Arora Gautam

37

Summary






We have created a new reusable action
guiLogin/guiLogin module
We a created a second new reusable action
guiLogin/CheckDialog
In this session we’ve learned how to map the Login
window and messages dialogs.

Dani Vainstein & Monika Arora Gautam

38

Special Thanks To


Bharathi Babu, India, Pune.



Ayyappa Koppolu, India, Pune.



Paul Grossman, USA, Chicago.



Sumit Singhal, India, Bangalore.



Sanjeev Mathur, India, Noida.



Manasa VN, India, Bangalore.



Prakash Kumar, India, Pune.



Richi Sharma, USA, New Jersey.



Janardhan Kalvakuntla, USA, New England.



Indlamudi Rajesh, India, Mumbai.

 Vainstein
Joydeep
Das,Arora
India,
Hyderabad.
Dani
& Monika
Gautam

39

Make sure to visit us for:






Tutorials
Articles
Projects
And much more

@
www.AdvancedQTP.com

Dani Vainstein & Monika Arora Gautam

40


Slide 20

Login Module

Building the Login GUI Layer Module

1

Topics covered







Create a new test, and classify it as a reusable
action under GUI Layer.
Adding Object to Local Object Repository.
Mapping Dialogs/ Objects.
Smart Identification.
Modify and save Test Settings.

Dani Vainstein & Monika Arora Gautam

2

Before you start…


Before starting the presentation, read about the
following topics in QTP help.






Reusable-Actions
Smart identification.
Action Parameters.
Object Spy.





Test Object Properties.
Run-time Object Properties.

Object Repository.

Dani Vainstein & Monika Arora Gautam

3

Things to Remember…




The Application Under Test (AUT) uses embedded
ActiveX objects, so when you first time open QTP, make
sure to check ActiveX option from Add-in manager.
When QTP is launched, be sure only the ActiveX option
is checked in the add-in manager.

Dani Vainstein & Monika Arora Gautam

4

guiLogin Module
Automation


FR
LIB
RA

Save the current test under
name = “guiLogin” in folder
FR\RA\GL

BL
GL

RS
DOC
DAT
SETTING

guiLogin

TESTS
RES
BATCH
ENV
Dani Vainstein & Monika Arora Gautam

5

guiLogin - Introduction








We are going to create a new Test and
reusable action.
The Test name would be guiLogin, because it
handles the “Login” dialog.
The main action will also called guiLogin. It
will be a reusable action, for further tests.
The guiLogin will receive an input parameter
of string type.

Dani Vainstein & Monika Arora Gautam

6

Modifying the Test Settings - Properties Tab

Description :
The guiLogin Module Stores all the actions required for the login process
Remark : associated add-ins : ActiveX only

Dani Vainstein & Monika Arora Gautam

7

Run Tab
Run one iteration only

Save The Test
Pop up
Message box
Disable Smart Identification
During the run session

Dani Vainstein & Monika Arora Gautam

8

Reusable action






We will create Reusable Action named guiLogin and set
the Action properties.
The guiLogin module ( reusable action ) implements all
the available actions on the Dialog login screen.
The Parameter StepName will be used as an instruction
to the reusable action i.e. “SetData”, “CheckLogo” etc.

Dani Vainstein & Monika Arora Gautam

9

guiLogin Reusable-Action


From Menu  Edit  Action  Action
Properties

Dani Vainstein & Monika Arora Gautam

10

guiLogin - General Tab
Change
Action
Name

Add
Description
Mark
Reusable

Dani Vainstein & Monika Arora Gautam

11

Parameters Tab – Add StepName


Add a new Input Parameter ( Click on + )
Add
StepName
Input
Parameter

Type
String

Dani Vainstein & Monika Arora Gautam

Add
Description

Default
Leave Empty

12

Mapping The Dialog Login







The guiLogin will hold a local repository.
The advantage of the OOT (Object Oriented Testing )
methodology, I think ( and others may disagree with me
) is that by having a reusable action per-screen, you
don’t have to maintain a shared object repository.
Especially when you work within a team, it helps
sparing the locks on the shared working files.
Mapping the application objects – is very important, you
should map your application before you start to “script”

Dani Vainstein & Monika Arora Gautam

13

Adding Objects to Local Repository




Open the Flight Application from Start  All Programs
 QuickTest Professional  Sample Applications 
Flight.
Do not login, just leave the window open.

Dani Vainstein & Monika Arora Gautam

14

Adding Objects to Local Repository





Open the local object repository from
menu  Resources  Object Repository.
Or just type Ctrl+R in QTP application.
QTP will show an hand icon.

Click Add objects in toolbar
Or
Object  Add objects To Local…

Dani Vainstein & Monika Arora Gautam

15

Mapping objects
Point the title-bar of dialog

Click OK
All Objects types

Click OK

Dani Vainstein & Monika Arora Gautam

16

Naming conventions



All the objects will be added to the local repository.
Remove spaces and non-alphanumeric characters from
Object Names.




Change “Agent Name:” to “AgentName”.
Change “Static” to “Logo”.
Remove all names with : (colon ) at the end of the name.

Dani Vainstein & Monika Arora Gautam

17

Why Renaming?











Sometimes there are two blanks instead of one; between two words.
According to my experience, nobody will make a new version for
such a mistake. Their answer ( R&D ) would be
“We will fix it later”.
For QTP this is critical, as it will not identify two spaces instead of
one.
The name “Static” says nothing to you and/or your colleagues, but
with “logo” you have no doubt.
QTP sometimes gives insignificant names to objects i.e. “button_1”
or “button_2”.
It is better to change these, to more descriptive names.
Changing logical names does not effect the QTP object recognition
mechanism.

Dani Vainstein & Monika Arora Gautam

18

Naming conventions

See the logical names
Convention changes

Dani Vainstein & Monika Arora Gautam

19

CheckDialog Reusable Action






We will learn how to check different dialog
messages that share same dialog title “Flight
Reservation”.
We will create a new reusable action inside the
guiLogin module, and we will call it
“CheckDialog”.
I will explain later, the considerations of this
decision.

Dani Vainstein & Monika Arora Gautam

20

Creating a new reusable action




From Menu : Insert  Call to New Action
Type : Hold the ALT key, and type ( I + N )
From toolbar as shown below:

Call to New Action

Dani Vainstein & Monika Arora Gautam

21

Adding a new reusable action
Name : CheckDialog

Description :
Manage all dialog checkpoints
under guiLogin

Reusable Action

Location : At the end of the test

Dani Vainstein & Monika Arora Gautam

22

CheckDialog Created




Now you should have two reusable actions.
Notice the actions listbox ( left ) and the
keyword view ( right ).

Dani Vainstein & Monika Arora Gautam

23

Mapping Dialogs



Move to Expert View Action CheckDialogs.
Open the local repository : Resources  Object
Repository
Or Type CTRL+R



Or from toolbar as shown below:




Object Repository

Dani Vainstein & Monika Arora Gautam

24

Mapping Dialogs






Open the Flight Reservation application if is not opened, and click
OK.
CAUTION : always be aware, specially when adding objects, that
you have only one instance of the AUT open.
What would happen? These child objects would be added under a
new “Dialog_2” parent object and would not be recognized during
playback.

Dani Vainstein & Monika Arora Gautam

25

Map Flight Reservations dialogs


Click OK to get Flight Reservations dialog.

Dani Vainstein & Monika Arora Gautam

26

Naming Conventions





Remove space between “Flight Reservation” and change it
to “FlightReservation".
Change the “static” to “Icon”.
Change “Please enter agent name” to “Msg”.

Dani Vainstein & Monika Arora Gautam

27

Mapping other dialogs?
Return to the same process and add all the objects/
dialog w.r.t. Logging in to Flight Application.
Try to map the following dialogs :







Why these are not added to the repository?

Dani Vainstein & Monika Arora Gautam

28

Mapping dialogs









That’s because all the messages has the same title “Flight
Reservations”.
For QTP all these dialogs are same.
Is it good? Of course! Otherwise you will have to map
every single message in your AUT.
But, what about the message displayed in the dialog?
The text is not the same.
This you will learn through the Object Identification
feature and the Object Spy in next upcoming slides.

Dani Vainstein & Monika Arora Gautam

29

Understanding object identification



Select the object Spy. From menu : Tools  Object Spy
Or from toolbar as shown below.

Object Spy

Dani Vainstein & Monika Arora Gautam

30

Object Spy




Dani Vainstein & Monika Arora Gautam

Click on the finger point and select the
message in the dialog.

Save a screenshot of the spy in “My
Pictures” and do same for this dialog
and compare properties for both the
messages.

31

Object Spy - Msg

Dani Vainstein & Monika Arora Gautam

32

Comparing



The properties are quite different. The key of the
mystery is the property window id, they are the
same = 65535.

Dani Vainstein & Monika Arora Gautam

33

Understanding The Object Identification


Another look to the repository will show us that the
object is identified by QTP using the native class and
window id, those properties have the same values

 You will see further,

why, this is a very big
advantage.

Dani Vainstein & Monika Arora Gautam

34

Highlight the Dialogs Messages in the
Application




Select the Msg object in the repository and Click the
“highlight in application” button while one of the popups is displayed, see what happens.
One by one do the same for other pop-ups, and see what
happens.

Highlight in application

Dani Vainstein & Monika Arora Gautam

35

Conclusion






Logically, QTP identifies all the messages inside
the same dialog as the only one message.
Imagine you have to map all the different
messages for same instance of dialog in your
AUT. It’s lot of job.
However QTP takes care of it by its Object
Identification and Spy feature.

Dani Vainstein & Monika Arora Gautam

36

Saving the Test



Save The Test.
Every Time you see * near the test name, it means that
the test is not saved. Always remember to save your
work.
Not Saved

Dani Vainstein & Monika Arora Gautam

37

Summary






We have created a new reusable action
guiLogin/guiLogin module
We a created a second new reusable action
guiLogin/CheckDialog
In this session we’ve learned how to map the Login
window and messages dialogs.

Dani Vainstein & Monika Arora Gautam

38

Special Thanks To


Bharathi Babu, India, Pune.



Ayyappa Koppolu, India, Pune.



Paul Grossman, USA, Chicago.



Sumit Singhal, India, Bangalore.



Sanjeev Mathur, India, Noida.



Manasa VN, India, Bangalore.



Prakash Kumar, India, Pune.



Richi Sharma, USA, New Jersey.



Janardhan Kalvakuntla, USA, New England.



Indlamudi Rajesh, India, Mumbai.

 Vainstein
Joydeep
Das,Arora
India,
Hyderabad.
Dani
& Monika
Gautam

39

Make sure to visit us for:






Tutorials
Articles
Projects
And much more

@
www.AdvancedQTP.com

Dani Vainstein & Monika Arora Gautam

40


Slide 21

Login Module

Building the Login GUI Layer Module

1

Topics covered







Create a new test, and classify it as a reusable
action under GUI Layer.
Adding Object to Local Object Repository.
Mapping Dialogs/ Objects.
Smart Identification.
Modify and save Test Settings.

Dani Vainstein & Monika Arora Gautam

2

Before you start…


Before starting the presentation, read about the
following topics in QTP help.






Reusable-Actions
Smart identification.
Action Parameters.
Object Spy.





Test Object Properties.
Run-time Object Properties.

Object Repository.

Dani Vainstein & Monika Arora Gautam

3

Things to Remember…




The Application Under Test (AUT) uses embedded
ActiveX objects, so when you first time open QTP, make
sure to check ActiveX option from Add-in manager.
When QTP is launched, be sure only the ActiveX option
is checked in the add-in manager.

Dani Vainstein & Monika Arora Gautam

4

guiLogin Module
Automation


FR
LIB
RA

Save the current test under
name = “guiLogin” in folder
FR\RA\GL

BL
GL

RS
DOC
DAT
SETTING

guiLogin

TESTS
RES
BATCH
ENV
Dani Vainstein & Monika Arora Gautam

5

guiLogin - Introduction








We are going to create a new Test and
reusable action.
The Test name would be guiLogin, because it
handles the “Login” dialog.
The main action will also called guiLogin. It
will be a reusable action, for further tests.
The guiLogin will receive an input parameter
of string type.

Dani Vainstein & Monika Arora Gautam

6

Modifying the Test Settings - Properties Tab

Description :
The guiLogin Module Stores all the actions required for the login process
Remark : associated add-ins : ActiveX only

Dani Vainstein & Monika Arora Gautam

7

Run Tab
Run one iteration only

Save The Test
Pop up
Message box
Disable Smart Identification
During the run session

Dani Vainstein & Monika Arora Gautam

8

Reusable action






We will create Reusable Action named guiLogin and set
the Action properties.
The guiLogin module ( reusable action ) implements all
the available actions on the Dialog login screen.
The Parameter StepName will be used as an instruction
to the reusable action i.e. “SetData”, “CheckLogo” etc.

Dani Vainstein & Monika Arora Gautam

9

guiLogin Reusable-Action


From Menu  Edit  Action  Action
Properties

Dani Vainstein & Monika Arora Gautam

10

guiLogin - General Tab
Change
Action
Name

Add
Description
Mark
Reusable

Dani Vainstein & Monika Arora Gautam

11

Parameters Tab – Add StepName


Add a new Input Parameter ( Click on + )
Add
StepName
Input
Parameter

Type
String

Dani Vainstein & Monika Arora Gautam

Add
Description

Default
Leave Empty

12

Mapping The Dialog Login







The guiLogin will hold a local repository.
The advantage of the OOT (Object Oriented Testing )
methodology, I think ( and others may disagree with me
) is that by having a reusable action per-screen, you
don’t have to maintain a shared object repository.
Especially when you work within a team, it helps
sparing the locks on the shared working files.
Mapping the application objects – is very important, you
should map your application before you start to “script”

Dani Vainstein & Monika Arora Gautam

13

Adding Objects to Local Repository




Open the Flight Application from Start  All Programs
 QuickTest Professional  Sample Applications 
Flight.
Do not login, just leave the window open.

Dani Vainstein & Monika Arora Gautam

14

Adding Objects to Local Repository





Open the local object repository from
menu  Resources  Object Repository.
Or just type Ctrl+R in QTP application.
QTP will show an hand icon.

Click Add objects in toolbar
Or
Object  Add objects To Local…

Dani Vainstein & Monika Arora Gautam

15

Mapping objects
Point the title-bar of dialog

Click OK
All Objects types

Click OK

Dani Vainstein & Monika Arora Gautam

16

Naming conventions



All the objects will be added to the local repository.
Remove spaces and non-alphanumeric characters from
Object Names.




Change “Agent Name:” to “AgentName”.
Change “Static” to “Logo”.
Remove all names with : (colon ) at the end of the name.

Dani Vainstein & Monika Arora Gautam

17

Why Renaming?











Sometimes there are two blanks instead of one; between two words.
According to my experience, nobody will make a new version for
such a mistake. Their answer ( R&D ) would be
“We will fix it later”.
For QTP this is critical, as it will not identify two spaces instead of
one.
The name “Static” says nothing to you and/or your colleagues, but
with “logo” you have no doubt.
QTP sometimes gives insignificant names to objects i.e. “button_1”
or “button_2”.
It is better to change these, to more descriptive names.
Changing logical names does not effect the QTP object recognition
mechanism.

Dani Vainstein & Monika Arora Gautam

18

Naming conventions

See the logical names
Convention changes

Dani Vainstein & Monika Arora Gautam

19

CheckDialog Reusable Action






We will learn how to check different dialog
messages that share same dialog title “Flight
Reservation”.
We will create a new reusable action inside the
guiLogin module, and we will call it
“CheckDialog”.
I will explain later, the considerations of this
decision.

Dani Vainstein & Monika Arora Gautam

20

Creating a new reusable action




From Menu : Insert  Call to New Action
Type : Hold the ALT key, and type ( I + N )
From toolbar as shown below:

Call to New Action

Dani Vainstein & Monika Arora Gautam

21

Adding a new reusable action
Name : CheckDialog

Description :
Manage all dialog checkpoints
under guiLogin

Reusable Action

Location : At the end of the test

Dani Vainstein & Monika Arora Gautam

22

CheckDialog Created




Now you should have two reusable actions.
Notice the actions listbox ( left ) and the
keyword view ( right ).

Dani Vainstein & Monika Arora Gautam

23

Mapping Dialogs



Move to Expert View Action CheckDialogs.
Open the local repository : Resources  Object
Repository
Or Type CTRL+R



Or from toolbar as shown below:




Object Repository

Dani Vainstein & Monika Arora Gautam

24

Mapping Dialogs






Open the Flight Reservation application if is not opened, and click
OK.
CAUTION : always be aware, specially when adding objects, that
you have only one instance of the AUT open.
What would happen? These child objects would be added under a
new “Dialog_2” parent object and would not be recognized during
playback.

Dani Vainstein & Monika Arora Gautam

25

Map Flight Reservations dialogs


Click OK to get Flight Reservations dialog.

Dani Vainstein & Monika Arora Gautam

26

Naming Conventions





Remove space between “Flight Reservation” and change it
to “FlightReservation".
Change the “static” to “Icon”.
Change “Please enter agent name” to “Msg”.

Dani Vainstein & Monika Arora Gautam

27

Mapping other dialogs?
Return to the same process and add all the objects/
dialog w.r.t. Logging in to Flight Application.
Try to map the following dialogs :







Why these are not added to the repository?

Dani Vainstein & Monika Arora Gautam

28

Mapping dialogs









That’s because all the messages has the same title “Flight
Reservations”.
For QTP all these dialogs are same.
Is it good? Of course! Otherwise you will have to map
every single message in your AUT.
But, what about the message displayed in the dialog?
The text is not the same.
This you will learn through the Object Identification
feature and the Object Spy in next upcoming slides.

Dani Vainstein & Monika Arora Gautam

29

Understanding object identification



Select the object Spy. From menu : Tools  Object Spy
Or from toolbar as shown below.

Object Spy

Dani Vainstein & Monika Arora Gautam

30

Object Spy




Dani Vainstein & Monika Arora Gautam

Click on the finger point and select the
message in the dialog.

Save a screenshot of the spy in “My
Pictures” and do same for this dialog
and compare properties for both the
messages.

31

Object Spy - Msg

Dani Vainstein & Monika Arora Gautam

32

Comparing



The properties are quite different. The key of the
mystery is the property window id, they are the
same = 65535.

Dani Vainstein & Monika Arora Gautam

33

Understanding The Object Identification


Another look to the repository will show us that the
object is identified by QTP using the native class and
window id, those properties have the same values

 You will see further,

why, this is a very big
advantage.

Dani Vainstein & Monika Arora Gautam

34

Highlight the Dialogs Messages in the
Application




Select the Msg object in the repository and Click the
“highlight in application” button while one of the popups is displayed, see what happens.
One by one do the same for other pop-ups, and see what
happens.

Highlight in application

Dani Vainstein & Monika Arora Gautam

35

Conclusion






Logically, QTP identifies all the messages inside
the same dialog as the only one message.
Imagine you have to map all the different
messages for same instance of dialog in your
AUT. It’s lot of job.
However QTP takes care of it by its Object
Identification and Spy feature.

Dani Vainstein & Monika Arora Gautam

36

Saving the Test



Save The Test.
Every Time you see * near the test name, it means that
the test is not saved. Always remember to save your
work.
Not Saved

Dani Vainstein & Monika Arora Gautam

37

Summary






We have created a new reusable action
guiLogin/guiLogin module
We a created a second new reusable action
guiLogin/CheckDialog
In this session we’ve learned how to map the Login
window and messages dialogs.

Dani Vainstein & Monika Arora Gautam

38

Special Thanks To


Bharathi Babu, India, Pune.



Ayyappa Koppolu, India, Pune.



Paul Grossman, USA, Chicago.



Sumit Singhal, India, Bangalore.



Sanjeev Mathur, India, Noida.



Manasa VN, India, Bangalore.



Prakash Kumar, India, Pune.



Richi Sharma, USA, New Jersey.



Janardhan Kalvakuntla, USA, New England.



Indlamudi Rajesh, India, Mumbai.

 Vainstein
Joydeep
Das,Arora
India,
Hyderabad.
Dani
& Monika
Gautam

39

Make sure to visit us for:






Tutorials
Articles
Projects
And much more

@
www.AdvancedQTP.com

Dani Vainstein & Monika Arora Gautam

40


Slide 22

Login Module

Building the Login GUI Layer Module

1

Topics covered







Create a new test, and classify it as a reusable
action under GUI Layer.
Adding Object to Local Object Repository.
Mapping Dialogs/ Objects.
Smart Identification.
Modify and save Test Settings.

Dani Vainstein & Monika Arora Gautam

2

Before you start…


Before starting the presentation, read about the
following topics in QTP help.






Reusable-Actions
Smart identification.
Action Parameters.
Object Spy.





Test Object Properties.
Run-time Object Properties.

Object Repository.

Dani Vainstein & Monika Arora Gautam

3

Things to Remember…




The Application Under Test (AUT) uses embedded
ActiveX objects, so when you first time open QTP, make
sure to check ActiveX option from Add-in manager.
When QTP is launched, be sure only the ActiveX option
is checked in the add-in manager.

Dani Vainstein & Monika Arora Gautam

4

guiLogin Module
Automation


FR
LIB
RA

Save the current test under
name = “guiLogin” in folder
FR\RA\GL

BL
GL

RS
DOC
DAT
SETTING

guiLogin

TESTS
RES
BATCH
ENV
Dani Vainstein & Monika Arora Gautam

5

guiLogin - Introduction








We are going to create a new Test and
reusable action.
The Test name would be guiLogin, because it
handles the “Login” dialog.
The main action will also called guiLogin. It
will be a reusable action, for further tests.
The guiLogin will receive an input parameter
of string type.

Dani Vainstein & Monika Arora Gautam

6

Modifying the Test Settings - Properties Tab

Description :
The guiLogin Module Stores all the actions required for the login process
Remark : associated add-ins : ActiveX only

Dani Vainstein & Monika Arora Gautam

7

Run Tab
Run one iteration only

Save The Test
Pop up
Message box
Disable Smart Identification
During the run session

Dani Vainstein & Monika Arora Gautam

8

Reusable action






We will create Reusable Action named guiLogin and set
the Action properties.
The guiLogin module ( reusable action ) implements all
the available actions on the Dialog login screen.
The Parameter StepName will be used as an instruction
to the reusable action i.e. “SetData”, “CheckLogo” etc.

Dani Vainstein & Monika Arora Gautam

9

guiLogin Reusable-Action


From Menu  Edit  Action  Action
Properties

Dani Vainstein & Monika Arora Gautam

10

guiLogin - General Tab
Change
Action
Name

Add
Description
Mark
Reusable

Dani Vainstein & Monika Arora Gautam

11

Parameters Tab – Add StepName


Add a new Input Parameter ( Click on + )
Add
StepName
Input
Parameter

Type
String

Dani Vainstein & Monika Arora Gautam

Add
Description

Default
Leave Empty

12

Mapping The Dialog Login







The guiLogin will hold a local repository.
The advantage of the OOT (Object Oriented Testing )
methodology, I think ( and others may disagree with me
) is that by having a reusable action per-screen, you
don’t have to maintain a shared object repository.
Especially when you work within a team, it helps
sparing the locks on the shared working files.
Mapping the application objects – is very important, you
should map your application before you start to “script”

Dani Vainstein & Monika Arora Gautam

13

Adding Objects to Local Repository




Open the Flight Application from Start  All Programs
 QuickTest Professional  Sample Applications 
Flight.
Do not login, just leave the window open.

Dani Vainstein & Monika Arora Gautam

14

Adding Objects to Local Repository





Open the local object repository from
menu  Resources  Object Repository.
Or just type Ctrl+R in QTP application.
QTP will show an hand icon.

Click Add objects in toolbar
Or
Object  Add objects To Local…

Dani Vainstein & Monika Arora Gautam

15

Mapping objects
Point the title-bar of dialog

Click OK
All Objects types

Click OK

Dani Vainstein & Monika Arora Gautam

16

Naming conventions



All the objects will be added to the local repository.
Remove spaces and non-alphanumeric characters from
Object Names.




Change “Agent Name:” to “AgentName”.
Change “Static” to “Logo”.
Remove all names with : (colon ) at the end of the name.

Dani Vainstein & Monika Arora Gautam

17

Why Renaming?











Sometimes there are two blanks instead of one; between two words.
According to my experience, nobody will make a new version for
such a mistake. Their answer ( R&D ) would be
“We will fix it later”.
For QTP this is critical, as it will not identify two spaces instead of
one.
The name “Static” says nothing to you and/or your colleagues, but
with “logo” you have no doubt.
QTP sometimes gives insignificant names to objects i.e. “button_1”
or “button_2”.
It is better to change these, to more descriptive names.
Changing logical names does not effect the QTP object recognition
mechanism.

Dani Vainstein & Monika Arora Gautam

18

Naming conventions

See the logical names
Convention changes

Dani Vainstein & Monika Arora Gautam

19

CheckDialog Reusable Action






We will learn how to check different dialog
messages that share same dialog title “Flight
Reservation”.
We will create a new reusable action inside the
guiLogin module, and we will call it
“CheckDialog”.
I will explain later, the considerations of this
decision.

Dani Vainstein & Monika Arora Gautam

20

Creating a new reusable action




From Menu : Insert  Call to New Action
Type : Hold the ALT key, and type ( I + N )
From toolbar as shown below:

Call to New Action

Dani Vainstein & Monika Arora Gautam

21

Adding a new reusable action
Name : CheckDialog

Description :
Manage all dialog checkpoints
under guiLogin

Reusable Action

Location : At the end of the test

Dani Vainstein & Monika Arora Gautam

22

CheckDialog Created




Now you should have two reusable actions.
Notice the actions listbox ( left ) and the
keyword view ( right ).

Dani Vainstein & Monika Arora Gautam

23

Mapping Dialogs



Move to Expert View Action CheckDialogs.
Open the local repository : Resources  Object
Repository
Or Type CTRL+R



Or from toolbar as shown below:




Object Repository

Dani Vainstein & Monika Arora Gautam

24

Mapping Dialogs






Open the Flight Reservation application if is not opened, and click
OK.
CAUTION : always be aware, specially when adding objects, that
you have only one instance of the AUT open.
What would happen? These child objects would be added under a
new “Dialog_2” parent object and would not be recognized during
playback.

Dani Vainstein & Monika Arora Gautam

25

Map Flight Reservations dialogs


Click OK to get Flight Reservations dialog.

Dani Vainstein & Monika Arora Gautam

26

Naming Conventions





Remove space between “Flight Reservation” and change it
to “FlightReservation".
Change the “static” to “Icon”.
Change “Please enter agent name” to “Msg”.

Dani Vainstein & Monika Arora Gautam

27

Mapping other dialogs?
Return to the same process and add all the objects/
dialog w.r.t. Logging in to Flight Application.
Try to map the following dialogs :







Why these are not added to the repository?

Dani Vainstein & Monika Arora Gautam

28

Mapping dialogs









That’s because all the messages has the same title “Flight
Reservations”.
For QTP all these dialogs are same.
Is it good? Of course! Otherwise you will have to map
every single message in your AUT.
But, what about the message displayed in the dialog?
The text is not the same.
This you will learn through the Object Identification
feature and the Object Spy in next upcoming slides.

Dani Vainstein & Monika Arora Gautam

29

Understanding object identification



Select the object Spy. From menu : Tools  Object Spy
Or from toolbar as shown below.

Object Spy

Dani Vainstein & Monika Arora Gautam

30

Object Spy




Dani Vainstein & Monika Arora Gautam

Click on the finger point and select the
message in the dialog.

Save a screenshot of the spy in “My
Pictures” and do same for this dialog
and compare properties for both the
messages.

31

Object Spy - Msg

Dani Vainstein & Monika Arora Gautam

32

Comparing



The properties are quite different. The key of the
mystery is the property window id, they are the
same = 65535.

Dani Vainstein & Monika Arora Gautam

33

Understanding The Object Identification


Another look to the repository will show us that the
object is identified by QTP using the native class and
window id, those properties have the same values

 You will see further,

why, this is a very big
advantage.

Dani Vainstein & Monika Arora Gautam

34

Highlight the Dialogs Messages in the
Application




Select the Msg object in the repository and Click the
“highlight in application” button while one of the popups is displayed, see what happens.
One by one do the same for other pop-ups, and see what
happens.

Highlight in application

Dani Vainstein & Monika Arora Gautam

35

Conclusion






Logically, QTP identifies all the messages inside
the same dialog as the only one message.
Imagine you have to map all the different
messages for same instance of dialog in your
AUT. It’s lot of job.
However QTP takes care of it by its Object
Identification and Spy feature.

Dani Vainstein & Monika Arora Gautam

36

Saving the Test



Save The Test.
Every Time you see * near the test name, it means that
the test is not saved. Always remember to save your
work.
Not Saved

Dani Vainstein & Monika Arora Gautam

37

Summary






We have created a new reusable action
guiLogin/guiLogin module
We a created a second new reusable action
guiLogin/CheckDialog
In this session we’ve learned how to map the Login
window and messages dialogs.

Dani Vainstein & Monika Arora Gautam

38

Special Thanks To


Bharathi Babu, India, Pune.



Ayyappa Koppolu, India, Pune.



Paul Grossman, USA, Chicago.



Sumit Singhal, India, Bangalore.



Sanjeev Mathur, India, Noida.



Manasa VN, India, Bangalore.



Prakash Kumar, India, Pune.



Richi Sharma, USA, New Jersey.



Janardhan Kalvakuntla, USA, New England.



Indlamudi Rajesh, India, Mumbai.

 Vainstein
Joydeep
Das,Arora
India,
Hyderabad.
Dani
& Monika
Gautam

39

Make sure to visit us for:






Tutorials
Articles
Projects
And much more

@
www.AdvancedQTP.com

Dani Vainstein & Monika Arora Gautam

40


Slide 23

Login Module

Building the Login GUI Layer Module

1

Topics covered







Create a new test, and classify it as a reusable
action under GUI Layer.
Adding Object to Local Object Repository.
Mapping Dialogs/ Objects.
Smart Identification.
Modify and save Test Settings.

Dani Vainstein & Monika Arora Gautam

2

Before you start…


Before starting the presentation, read about the
following topics in QTP help.






Reusable-Actions
Smart identification.
Action Parameters.
Object Spy.





Test Object Properties.
Run-time Object Properties.

Object Repository.

Dani Vainstein & Monika Arora Gautam

3

Things to Remember…




The Application Under Test (AUT) uses embedded
ActiveX objects, so when you first time open QTP, make
sure to check ActiveX option from Add-in manager.
When QTP is launched, be sure only the ActiveX option
is checked in the add-in manager.

Dani Vainstein & Monika Arora Gautam

4

guiLogin Module
Automation


FR
LIB
RA

Save the current test under
name = “guiLogin” in folder
FR\RA\GL

BL
GL

RS
DOC
DAT
SETTING

guiLogin

TESTS
RES
BATCH
ENV
Dani Vainstein & Monika Arora Gautam

5

guiLogin - Introduction








We are going to create a new Test and
reusable action.
The Test name would be guiLogin, because it
handles the “Login” dialog.
The main action will also called guiLogin. It
will be a reusable action, for further tests.
The guiLogin will receive an input parameter
of string type.

Dani Vainstein & Monika Arora Gautam

6

Modifying the Test Settings - Properties Tab

Description :
The guiLogin Module Stores all the actions required for the login process
Remark : associated add-ins : ActiveX only

Dani Vainstein & Monika Arora Gautam

7

Run Tab
Run one iteration only

Save The Test
Pop up
Message box
Disable Smart Identification
During the run session

Dani Vainstein & Monika Arora Gautam

8

Reusable action






We will create Reusable Action named guiLogin and set
the Action properties.
The guiLogin module ( reusable action ) implements all
the available actions on the Dialog login screen.
The Parameter StepName will be used as an instruction
to the reusable action i.e. “SetData”, “CheckLogo” etc.

Dani Vainstein & Monika Arora Gautam

9

guiLogin Reusable-Action


From Menu  Edit  Action  Action
Properties

Dani Vainstein & Monika Arora Gautam

10

guiLogin - General Tab
Change
Action
Name

Add
Description
Mark
Reusable

Dani Vainstein & Monika Arora Gautam

11

Parameters Tab – Add StepName


Add a new Input Parameter ( Click on + )
Add
StepName
Input
Parameter

Type
String

Dani Vainstein & Monika Arora Gautam

Add
Description

Default
Leave Empty

12

Mapping The Dialog Login







The guiLogin will hold a local repository.
The advantage of the OOT (Object Oriented Testing )
methodology, I think ( and others may disagree with me
) is that by having a reusable action per-screen, you
don’t have to maintain a shared object repository.
Especially when you work within a team, it helps
sparing the locks on the shared working files.
Mapping the application objects – is very important, you
should map your application before you start to “script”

Dani Vainstein & Monika Arora Gautam

13

Adding Objects to Local Repository




Open the Flight Application from Start  All Programs
 QuickTest Professional  Sample Applications 
Flight.
Do not login, just leave the window open.

Dani Vainstein & Monika Arora Gautam

14

Adding Objects to Local Repository





Open the local object repository from
menu  Resources  Object Repository.
Or just type Ctrl+R in QTP application.
QTP will show an hand icon.

Click Add objects in toolbar
Or
Object  Add objects To Local…

Dani Vainstein & Monika Arora Gautam

15

Mapping objects
Point the title-bar of dialog

Click OK
All Objects types

Click OK

Dani Vainstein & Monika Arora Gautam

16

Naming conventions



All the objects will be added to the local repository.
Remove spaces and non-alphanumeric characters from
Object Names.




Change “Agent Name:” to “AgentName”.
Change “Static” to “Logo”.
Remove all names with : (colon ) at the end of the name.

Dani Vainstein & Monika Arora Gautam

17

Why Renaming?











Sometimes there are two blanks instead of one; between two words.
According to my experience, nobody will make a new version for
such a mistake. Their answer ( R&D ) would be
“We will fix it later”.
For QTP this is critical, as it will not identify two spaces instead of
one.
The name “Static” says nothing to you and/or your colleagues, but
with “logo” you have no doubt.
QTP sometimes gives insignificant names to objects i.e. “button_1”
or “button_2”.
It is better to change these, to more descriptive names.
Changing logical names does not effect the QTP object recognition
mechanism.

Dani Vainstein & Monika Arora Gautam

18

Naming conventions

See the logical names
Convention changes

Dani Vainstein & Monika Arora Gautam

19

CheckDialog Reusable Action






We will learn how to check different dialog
messages that share same dialog title “Flight
Reservation”.
We will create a new reusable action inside the
guiLogin module, and we will call it
“CheckDialog”.
I will explain later, the considerations of this
decision.

Dani Vainstein & Monika Arora Gautam

20

Creating a new reusable action




From Menu : Insert  Call to New Action
Type : Hold the ALT key, and type ( I + N )
From toolbar as shown below:

Call to New Action

Dani Vainstein & Monika Arora Gautam

21

Adding a new reusable action
Name : CheckDialog

Description :
Manage all dialog checkpoints
under guiLogin

Reusable Action

Location : At the end of the test

Dani Vainstein & Monika Arora Gautam

22

CheckDialog Created




Now you should have two reusable actions.
Notice the actions listbox ( left ) and the
keyword view ( right ).

Dani Vainstein & Monika Arora Gautam

23

Mapping Dialogs



Move to Expert View Action CheckDialogs.
Open the local repository : Resources  Object
Repository
Or Type CTRL+R



Or from toolbar as shown below:




Object Repository

Dani Vainstein & Monika Arora Gautam

24

Mapping Dialogs






Open the Flight Reservation application if is not opened, and click
OK.
CAUTION : always be aware, specially when adding objects, that
you have only one instance of the AUT open.
What would happen? These child objects would be added under a
new “Dialog_2” parent object and would not be recognized during
playback.

Dani Vainstein & Monika Arora Gautam

25

Map Flight Reservations dialogs


Click OK to get Flight Reservations dialog.

Dani Vainstein & Monika Arora Gautam

26

Naming Conventions





Remove space between “Flight Reservation” and change it
to “FlightReservation".
Change the “static” to “Icon”.
Change “Please enter agent name” to “Msg”.

Dani Vainstein & Monika Arora Gautam

27

Mapping other dialogs?
Return to the same process and add all the objects/
dialog w.r.t. Logging in to Flight Application.
Try to map the following dialogs :







Why these are not added to the repository?

Dani Vainstein & Monika Arora Gautam

28

Mapping dialogs









That’s because all the messages has the same title “Flight
Reservations”.
For QTP all these dialogs are same.
Is it good? Of course! Otherwise you will have to map
every single message in your AUT.
But, what about the message displayed in the dialog?
The text is not the same.
This you will learn through the Object Identification
feature and the Object Spy in next upcoming slides.

Dani Vainstein & Monika Arora Gautam

29

Understanding object identification



Select the object Spy. From menu : Tools  Object Spy
Or from toolbar as shown below.

Object Spy

Dani Vainstein & Monika Arora Gautam

30

Object Spy




Dani Vainstein & Monika Arora Gautam

Click on the finger point and select the
message in the dialog.

Save a screenshot of the spy in “My
Pictures” and do same for this dialog
and compare properties for both the
messages.

31

Object Spy - Msg

Dani Vainstein & Monika Arora Gautam

32

Comparing



The properties are quite different. The key of the
mystery is the property window id, they are the
same = 65535.

Dani Vainstein & Monika Arora Gautam

33

Understanding The Object Identification


Another look to the repository will show us that the
object is identified by QTP using the native class and
window id, those properties have the same values

 You will see further,

why, this is a very big
advantage.

Dani Vainstein & Monika Arora Gautam

34

Highlight the Dialogs Messages in the
Application




Select the Msg object in the repository and Click the
“highlight in application” button while one of the popups is displayed, see what happens.
One by one do the same for other pop-ups, and see what
happens.

Highlight in application

Dani Vainstein & Monika Arora Gautam

35

Conclusion






Logically, QTP identifies all the messages inside
the same dialog as the only one message.
Imagine you have to map all the different
messages for same instance of dialog in your
AUT. It’s lot of job.
However QTP takes care of it by its Object
Identification and Spy feature.

Dani Vainstein & Monika Arora Gautam

36

Saving the Test



Save The Test.
Every Time you see * near the test name, it means that
the test is not saved. Always remember to save your
work.
Not Saved

Dani Vainstein & Monika Arora Gautam

37

Summary






We have created a new reusable action
guiLogin/guiLogin module
We a created a second new reusable action
guiLogin/CheckDialog
In this session we’ve learned how to map the Login
window and messages dialogs.

Dani Vainstein & Monika Arora Gautam

38

Special Thanks To


Bharathi Babu, India, Pune.



Ayyappa Koppolu, India, Pune.



Paul Grossman, USA, Chicago.



Sumit Singhal, India, Bangalore.



Sanjeev Mathur, India, Noida.



Manasa VN, India, Bangalore.



Prakash Kumar, India, Pune.



Richi Sharma, USA, New Jersey.



Janardhan Kalvakuntla, USA, New England.



Indlamudi Rajesh, India, Mumbai.

 Vainstein
Joydeep
Das,Arora
India,
Hyderabad.
Dani
& Monika
Gautam

39

Make sure to visit us for:






Tutorials
Articles
Projects
And much more

@
www.AdvancedQTP.com

Dani Vainstein & Monika Arora Gautam

40


Slide 24

Login Module

Building the Login GUI Layer Module

1

Topics covered







Create a new test, and classify it as a reusable
action under GUI Layer.
Adding Object to Local Object Repository.
Mapping Dialogs/ Objects.
Smart Identification.
Modify and save Test Settings.

Dani Vainstein & Monika Arora Gautam

2

Before you start…


Before starting the presentation, read about the
following topics in QTP help.






Reusable-Actions
Smart identification.
Action Parameters.
Object Spy.





Test Object Properties.
Run-time Object Properties.

Object Repository.

Dani Vainstein & Monika Arora Gautam

3

Things to Remember…




The Application Under Test (AUT) uses embedded
ActiveX objects, so when you first time open QTP, make
sure to check ActiveX option from Add-in manager.
When QTP is launched, be sure only the ActiveX option
is checked in the add-in manager.

Dani Vainstein & Monika Arora Gautam

4

guiLogin Module
Automation


FR
LIB
RA

Save the current test under
name = “guiLogin” in folder
FR\RA\GL

BL
GL

RS
DOC
DAT
SETTING

guiLogin

TESTS
RES
BATCH
ENV
Dani Vainstein & Monika Arora Gautam

5

guiLogin - Introduction








We are going to create a new Test and
reusable action.
The Test name would be guiLogin, because it
handles the “Login” dialog.
The main action will also called guiLogin. It
will be a reusable action, for further tests.
The guiLogin will receive an input parameter
of string type.

Dani Vainstein & Monika Arora Gautam

6

Modifying the Test Settings - Properties Tab

Description :
The guiLogin Module Stores all the actions required for the login process
Remark : associated add-ins : ActiveX only

Dani Vainstein & Monika Arora Gautam

7

Run Tab
Run one iteration only

Save The Test
Pop up
Message box
Disable Smart Identification
During the run session

Dani Vainstein & Monika Arora Gautam

8

Reusable action






We will create Reusable Action named guiLogin and set
the Action properties.
The guiLogin module ( reusable action ) implements all
the available actions on the Dialog login screen.
The Parameter StepName will be used as an instruction
to the reusable action i.e. “SetData”, “CheckLogo” etc.

Dani Vainstein & Monika Arora Gautam

9

guiLogin Reusable-Action


From Menu  Edit  Action  Action
Properties

Dani Vainstein & Monika Arora Gautam

10

guiLogin - General Tab
Change
Action
Name

Add
Description
Mark
Reusable

Dani Vainstein & Monika Arora Gautam

11

Parameters Tab – Add StepName


Add a new Input Parameter ( Click on + )
Add
StepName
Input
Parameter

Type
String

Dani Vainstein & Monika Arora Gautam

Add
Description

Default
Leave Empty

12

Mapping The Dialog Login







The guiLogin will hold a local repository.
The advantage of the OOT (Object Oriented Testing )
methodology, I think ( and others may disagree with me
) is that by having a reusable action per-screen, you
don’t have to maintain a shared object repository.
Especially when you work within a team, it helps
sparing the locks on the shared working files.
Mapping the application objects – is very important, you
should map your application before you start to “script”

Dani Vainstein & Monika Arora Gautam

13

Adding Objects to Local Repository




Open the Flight Application from Start  All Programs
 QuickTest Professional  Sample Applications 
Flight.
Do not login, just leave the window open.

Dani Vainstein & Monika Arora Gautam

14

Adding Objects to Local Repository





Open the local object repository from
menu  Resources  Object Repository.
Or just type Ctrl+R in QTP application.
QTP will show an hand icon.

Click Add objects in toolbar
Or
Object  Add objects To Local…

Dani Vainstein & Monika Arora Gautam

15

Mapping objects
Point the title-bar of dialog

Click OK
All Objects types

Click OK

Dani Vainstein & Monika Arora Gautam

16

Naming conventions



All the objects will be added to the local repository.
Remove spaces and non-alphanumeric characters from
Object Names.




Change “Agent Name:” to “AgentName”.
Change “Static” to “Logo”.
Remove all names with : (colon ) at the end of the name.

Dani Vainstein & Monika Arora Gautam

17

Why Renaming?











Sometimes there are two blanks instead of one; between two words.
According to my experience, nobody will make a new version for
such a mistake. Their answer ( R&D ) would be
“We will fix it later”.
For QTP this is critical, as it will not identify two spaces instead of
one.
The name “Static” says nothing to you and/or your colleagues, but
with “logo” you have no doubt.
QTP sometimes gives insignificant names to objects i.e. “button_1”
or “button_2”.
It is better to change these, to more descriptive names.
Changing logical names does not effect the QTP object recognition
mechanism.

Dani Vainstein & Monika Arora Gautam

18

Naming conventions

See the logical names
Convention changes

Dani Vainstein & Monika Arora Gautam

19

CheckDialog Reusable Action






We will learn how to check different dialog
messages that share same dialog title “Flight
Reservation”.
We will create a new reusable action inside the
guiLogin module, and we will call it
“CheckDialog”.
I will explain later, the considerations of this
decision.

Dani Vainstein & Monika Arora Gautam

20

Creating a new reusable action




From Menu : Insert  Call to New Action
Type : Hold the ALT key, and type ( I + N )
From toolbar as shown below:

Call to New Action

Dani Vainstein & Monika Arora Gautam

21

Adding a new reusable action
Name : CheckDialog

Description :
Manage all dialog checkpoints
under guiLogin

Reusable Action

Location : At the end of the test

Dani Vainstein & Monika Arora Gautam

22

CheckDialog Created




Now you should have two reusable actions.
Notice the actions listbox ( left ) and the
keyword view ( right ).

Dani Vainstein & Monika Arora Gautam

23

Mapping Dialogs



Move to Expert View Action CheckDialogs.
Open the local repository : Resources  Object
Repository
Or Type CTRL+R



Or from toolbar as shown below:




Object Repository

Dani Vainstein & Monika Arora Gautam

24

Mapping Dialogs






Open the Flight Reservation application if is not opened, and click
OK.
CAUTION : always be aware, specially when adding objects, that
you have only one instance of the AUT open.
What would happen? These child objects would be added under a
new “Dialog_2” parent object and would not be recognized during
playback.

Dani Vainstein & Monika Arora Gautam

25

Map Flight Reservations dialogs


Click OK to get Flight Reservations dialog.

Dani Vainstein & Monika Arora Gautam

26

Naming Conventions





Remove space between “Flight Reservation” and change it
to “FlightReservation".
Change the “static” to “Icon”.
Change “Please enter agent name” to “Msg”.

Dani Vainstein & Monika Arora Gautam

27

Mapping other dialogs?
Return to the same process and add all the objects/
dialog w.r.t. Logging in to Flight Application.
Try to map the following dialogs :







Why these are not added to the repository?

Dani Vainstein & Monika Arora Gautam

28

Mapping dialogs









That’s because all the messages has the same title “Flight
Reservations”.
For QTP all these dialogs are same.
Is it good? Of course! Otherwise you will have to map
every single message in your AUT.
But, what about the message displayed in the dialog?
The text is not the same.
This you will learn through the Object Identification
feature and the Object Spy in next upcoming slides.

Dani Vainstein & Monika Arora Gautam

29

Understanding object identification



Select the object Spy. From menu : Tools  Object Spy
Or from toolbar as shown below.

Object Spy

Dani Vainstein & Monika Arora Gautam

30

Object Spy




Dani Vainstein & Monika Arora Gautam

Click on the finger point and select the
message in the dialog.

Save a screenshot of the spy in “My
Pictures” and do same for this dialog
and compare properties for both the
messages.

31

Object Spy - Msg

Dani Vainstein & Monika Arora Gautam

32

Comparing



The properties are quite different. The key of the
mystery is the property window id, they are the
same = 65535.

Dani Vainstein & Monika Arora Gautam

33

Understanding The Object Identification


Another look to the repository will show us that the
object is identified by QTP using the native class and
window id, those properties have the same values

 You will see further,

why, this is a very big
advantage.

Dani Vainstein & Monika Arora Gautam

34

Highlight the Dialogs Messages in the
Application




Select the Msg object in the repository and Click the
“highlight in application” button while one of the popups is displayed, see what happens.
One by one do the same for other pop-ups, and see what
happens.

Highlight in application

Dani Vainstein & Monika Arora Gautam

35

Conclusion






Logically, QTP identifies all the messages inside
the same dialog as the only one message.
Imagine you have to map all the different
messages for same instance of dialog in your
AUT. It’s lot of job.
However QTP takes care of it by its Object
Identification and Spy feature.

Dani Vainstein & Monika Arora Gautam

36

Saving the Test



Save The Test.
Every Time you see * near the test name, it means that
the test is not saved. Always remember to save your
work.
Not Saved

Dani Vainstein & Monika Arora Gautam

37

Summary






We have created a new reusable action
guiLogin/guiLogin module
We a created a second new reusable action
guiLogin/CheckDialog
In this session we’ve learned how to map the Login
window and messages dialogs.

Dani Vainstein & Monika Arora Gautam

38

Special Thanks To


Bharathi Babu, India, Pune.



Ayyappa Koppolu, India, Pune.



Paul Grossman, USA, Chicago.



Sumit Singhal, India, Bangalore.



Sanjeev Mathur, India, Noida.



Manasa VN, India, Bangalore.



Prakash Kumar, India, Pune.



Richi Sharma, USA, New Jersey.



Janardhan Kalvakuntla, USA, New England.



Indlamudi Rajesh, India, Mumbai.

 Vainstein
Joydeep
Das,Arora
India,
Hyderabad.
Dani
& Monika
Gautam

39

Make sure to visit us for:






Tutorials
Articles
Projects
And much more

@
www.AdvancedQTP.com

Dani Vainstein & Monika Arora Gautam

40


Slide 25

Login Module

Building the Login GUI Layer Module

1

Topics covered







Create a new test, and classify it as a reusable
action under GUI Layer.
Adding Object to Local Object Repository.
Mapping Dialogs/ Objects.
Smart Identification.
Modify and save Test Settings.

Dani Vainstein & Monika Arora Gautam

2

Before you start…


Before starting the presentation, read about the
following topics in QTP help.






Reusable-Actions
Smart identification.
Action Parameters.
Object Spy.





Test Object Properties.
Run-time Object Properties.

Object Repository.

Dani Vainstein & Monika Arora Gautam

3

Things to Remember…




The Application Under Test (AUT) uses embedded
ActiveX objects, so when you first time open QTP, make
sure to check ActiveX option from Add-in manager.
When QTP is launched, be sure only the ActiveX option
is checked in the add-in manager.

Dani Vainstein & Monika Arora Gautam

4

guiLogin Module
Automation


FR
LIB
RA

Save the current test under
name = “guiLogin” in folder
FR\RA\GL

BL
GL

RS
DOC
DAT
SETTING

guiLogin

TESTS
RES
BATCH
ENV
Dani Vainstein & Monika Arora Gautam

5

guiLogin - Introduction








We are going to create a new Test and
reusable action.
The Test name would be guiLogin, because it
handles the “Login” dialog.
The main action will also called guiLogin. It
will be a reusable action, for further tests.
The guiLogin will receive an input parameter
of string type.

Dani Vainstein & Monika Arora Gautam

6

Modifying the Test Settings - Properties Tab

Description :
The guiLogin Module Stores all the actions required for the login process
Remark : associated add-ins : ActiveX only

Dani Vainstein & Monika Arora Gautam

7

Run Tab
Run one iteration only

Save The Test
Pop up
Message box
Disable Smart Identification
During the run session

Dani Vainstein & Monika Arora Gautam

8

Reusable action






We will create Reusable Action named guiLogin and set
the Action properties.
The guiLogin module ( reusable action ) implements all
the available actions on the Dialog login screen.
The Parameter StepName will be used as an instruction
to the reusable action i.e. “SetData”, “CheckLogo” etc.

Dani Vainstein & Monika Arora Gautam

9

guiLogin Reusable-Action


From Menu  Edit  Action  Action
Properties

Dani Vainstein & Monika Arora Gautam

10

guiLogin - General Tab
Change
Action
Name

Add
Description
Mark
Reusable

Dani Vainstein & Monika Arora Gautam

11

Parameters Tab – Add StepName


Add a new Input Parameter ( Click on + )
Add
StepName
Input
Parameter

Type
String

Dani Vainstein & Monika Arora Gautam

Add
Description

Default
Leave Empty

12

Mapping The Dialog Login







The guiLogin will hold a local repository.
The advantage of the OOT (Object Oriented Testing )
methodology, I think ( and others may disagree with me
) is that by having a reusable action per-screen, you
don’t have to maintain a shared object repository.
Especially when you work within a team, it helps
sparing the locks on the shared working files.
Mapping the application objects – is very important, you
should map your application before you start to “script”

Dani Vainstein & Monika Arora Gautam

13

Adding Objects to Local Repository




Open the Flight Application from Start  All Programs
 QuickTest Professional  Sample Applications 
Flight.
Do not login, just leave the window open.

Dani Vainstein & Monika Arora Gautam

14

Adding Objects to Local Repository





Open the local object repository from
menu  Resources  Object Repository.
Or just type Ctrl+R in QTP application.
QTP will show an hand icon.

Click Add objects in toolbar
Or
Object  Add objects To Local…

Dani Vainstein & Monika Arora Gautam

15

Mapping objects
Point the title-bar of dialog

Click OK
All Objects types

Click OK

Dani Vainstein & Monika Arora Gautam

16

Naming conventions



All the objects will be added to the local repository.
Remove spaces and non-alphanumeric characters from
Object Names.




Change “Agent Name:” to “AgentName”.
Change “Static” to “Logo”.
Remove all names with : (colon ) at the end of the name.

Dani Vainstein & Monika Arora Gautam

17

Why Renaming?











Sometimes there are two blanks instead of one; between two words.
According to my experience, nobody will make a new version for
such a mistake. Their answer ( R&D ) would be
“We will fix it later”.
For QTP this is critical, as it will not identify two spaces instead of
one.
The name “Static” says nothing to you and/or your colleagues, but
with “logo” you have no doubt.
QTP sometimes gives insignificant names to objects i.e. “button_1”
or “button_2”.
It is better to change these, to more descriptive names.
Changing logical names does not effect the QTP object recognition
mechanism.

Dani Vainstein & Monika Arora Gautam

18

Naming conventions

See the logical names
Convention changes

Dani Vainstein & Monika Arora Gautam

19

CheckDialog Reusable Action






We will learn how to check different dialog
messages that share same dialog title “Flight
Reservation”.
We will create a new reusable action inside the
guiLogin module, and we will call it
“CheckDialog”.
I will explain later, the considerations of this
decision.

Dani Vainstein & Monika Arora Gautam

20

Creating a new reusable action




From Menu : Insert  Call to New Action
Type : Hold the ALT key, and type ( I + N )
From toolbar as shown below:

Call to New Action

Dani Vainstein & Monika Arora Gautam

21

Adding a new reusable action
Name : CheckDialog

Description :
Manage all dialog checkpoints
under guiLogin

Reusable Action

Location : At the end of the test

Dani Vainstein & Monika Arora Gautam

22

CheckDialog Created




Now you should have two reusable actions.
Notice the actions listbox ( left ) and the
keyword view ( right ).

Dani Vainstein & Monika Arora Gautam

23

Mapping Dialogs



Move to Expert View Action CheckDialogs.
Open the local repository : Resources  Object
Repository
Or Type CTRL+R



Or from toolbar as shown below:




Object Repository

Dani Vainstein & Monika Arora Gautam

24

Mapping Dialogs






Open the Flight Reservation application if is not opened, and click
OK.
CAUTION : always be aware, specially when adding objects, that
you have only one instance of the AUT open.
What would happen? These child objects would be added under a
new “Dialog_2” parent object and would not be recognized during
playback.

Dani Vainstein & Monika Arora Gautam

25

Map Flight Reservations dialogs


Click OK to get Flight Reservations dialog.

Dani Vainstein & Monika Arora Gautam

26

Naming Conventions





Remove space between “Flight Reservation” and change it
to “FlightReservation".
Change the “static” to “Icon”.
Change “Please enter agent name” to “Msg”.

Dani Vainstein & Monika Arora Gautam

27

Mapping other dialogs?
Return to the same process and add all the objects/
dialog w.r.t. Logging in to Flight Application.
Try to map the following dialogs :







Why these are not added to the repository?

Dani Vainstein & Monika Arora Gautam

28

Mapping dialogs









That’s because all the messages has the same title “Flight
Reservations”.
For QTP all these dialogs are same.
Is it good? Of course! Otherwise you will have to map
every single message in your AUT.
But, what about the message displayed in the dialog?
The text is not the same.
This you will learn through the Object Identification
feature and the Object Spy in next upcoming slides.

Dani Vainstein & Monika Arora Gautam

29

Understanding object identification



Select the object Spy. From menu : Tools  Object Spy
Or from toolbar as shown below.

Object Spy

Dani Vainstein & Monika Arora Gautam

30

Object Spy




Dani Vainstein & Monika Arora Gautam

Click on the finger point and select the
message in the dialog.

Save a screenshot of the spy in “My
Pictures” and do same for this dialog
and compare properties for both the
messages.

31

Object Spy - Msg

Dani Vainstein & Monika Arora Gautam

32

Comparing



The properties are quite different. The key of the
mystery is the property window id, they are the
same = 65535.

Dani Vainstein & Monika Arora Gautam

33

Understanding The Object Identification


Another look to the repository will show us that the
object is identified by QTP using the native class and
window id, those properties have the same values

 You will see further,

why, this is a very big
advantage.

Dani Vainstein & Monika Arora Gautam

34

Highlight the Dialogs Messages in the
Application




Select the Msg object in the repository and Click the
“highlight in application” button while one of the popups is displayed, see what happens.
One by one do the same for other pop-ups, and see what
happens.

Highlight in application

Dani Vainstein & Monika Arora Gautam

35

Conclusion






Logically, QTP identifies all the messages inside
the same dialog as the only one message.
Imagine you have to map all the different
messages for same instance of dialog in your
AUT. It’s lot of job.
However QTP takes care of it by its Object
Identification and Spy feature.

Dani Vainstein & Monika Arora Gautam

36

Saving the Test



Save The Test.
Every Time you see * near the test name, it means that
the test is not saved. Always remember to save your
work.
Not Saved

Dani Vainstein & Monika Arora Gautam

37

Summary






We have created a new reusable action
guiLogin/guiLogin module
We a created a second new reusable action
guiLogin/CheckDialog
In this session we’ve learned how to map the Login
window and messages dialogs.

Dani Vainstein & Monika Arora Gautam

38

Special Thanks To


Bharathi Babu, India, Pune.



Ayyappa Koppolu, India, Pune.



Paul Grossman, USA, Chicago.



Sumit Singhal, India, Bangalore.



Sanjeev Mathur, India, Noida.



Manasa VN, India, Bangalore.



Prakash Kumar, India, Pune.



Richi Sharma, USA, New Jersey.



Janardhan Kalvakuntla, USA, New England.



Indlamudi Rajesh, India, Mumbai.

 Vainstein
Joydeep
Das,Arora
India,
Hyderabad.
Dani
& Monika
Gautam

39

Make sure to visit us for:






Tutorials
Articles
Projects
And much more

@
www.AdvancedQTP.com

Dani Vainstein & Monika Arora Gautam

40


Slide 26

Login Module

Building the Login GUI Layer Module

1

Topics covered







Create a new test, and classify it as a reusable
action under GUI Layer.
Adding Object to Local Object Repository.
Mapping Dialogs/ Objects.
Smart Identification.
Modify and save Test Settings.

Dani Vainstein & Monika Arora Gautam

2

Before you start…


Before starting the presentation, read about the
following topics in QTP help.






Reusable-Actions
Smart identification.
Action Parameters.
Object Spy.





Test Object Properties.
Run-time Object Properties.

Object Repository.

Dani Vainstein & Monika Arora Gautam

3

Things to Remember…




The Application Under Test (AUT) uses embedded
ActiveX objects, so when you first time open QTP, make
sure to check ActiveX option from Add-in manager.
When QTP is launched, be sure only the ActiveX option
is checked in the add-in manager.

Dani Vainstein & Monika Arora Gautam

4

guiLogin Module
Automation


FR
LIB
RA

Save the current test under
name = “guiLogin” in folder
FR\RA\GL

BL
GL

RS
DOC
DAT
SETTING

guiLogin

TESTS
RES
BATCH
ENV
Dani Vainstein & Monika Arora Gautam

5

guiLogin - Introduction








We are going to create a new Test and
reusable action.
The Test name would be guiLogin, because it
handles the “Login” dialog.
The main action will also called guiLogin. It
will be a reusable action, for further tests.
The guiLogin will receive an input parameter
of string type.

Dani Vainstein & Monika Arora Gautam

6

Modifying the Test Settings - Properties Tab

Description :
The guiLogin Module Stores all the actions required for the login process
Remark : associated add-ins : ActiveX only

Dani Vainstein & Monika Arora Gautam

7

Run Tab
Run one iteration only

Save The Test
Pop up
Message box
Disable Smart Identification
During the run session

Dani Vainstein & Monika Arora Gautam

8

Reusable action






We will create Reusable Action named guiLogin and set
the Action properties.
The guiLogin module ( reusable action ) implements all
the available actions on the Dialog login screen.
The Parameter StepName will be used as an instruction
to the reusable action i.e. “SetData”, “CheckLogo” etc.

Dani Vainstein & Monika Arora Gautam

9

guiLogin Reusable-Action


From Menu  Edit  Action  Action
Properties

Dani Vainstein & Monika Arora Gautam

10

guiLogin - General Tab
Change
Action
Name

Add
Description
Mark
Reusable

Dani Vainstein & Monika Arora Gautam

11

Parameters Tab – Add StepName


Add a new Input Parameter ( Click on + )
Add
StepName
Input
Parameter

Type
String

Dani Vainstein & Monika Arora Gautam

Add
Description

Default
Leave Empty

12

Mapping The Dialog Login







The guiLogin will hold a local repository.
The advantage of the OOT (Object Oriented Testing )
methodology, I think ( and others may disagree with me
) is that by having a reusable action per-screen, you
don’t have to maintain a shared object repository.
Especially when you work within a team, it helps
sparing the locks on the shared working files.
Mapping the application objects – is very important, you
should map your application before you start to “script”

Dani Vainstein & Monika Arora Gautam

13

Adding Objects to Local Repository




Open the Flight Application from Start  All Programs
 QuickTest Professional  Sample Applications 
Flight.
Do not login, just leave the window open.

Dani Vainstein & Monika Arora Gautam

14

Adding Objects to Local Repository





Open the local object repository from
menu  Resources  Object Repository.
Or just type Ctrl+R in QTP application.
QTP will show an hand icon.

Click Add objects in toolbar
Or
Object  Add objects To Local…

Dani Vainstein & Monika Arora Gautam

15

Mapping objects
Point the title-bar of dialog

Click OK
All Objects types

Click OK

Dani Vainstein & Monika Arora Gautam

16

Naming conventions



All the objects will be added to the local repository.
Remove spaces and non-alphanumeric characters from
Object Names.




Change “Agent Name:” to “AgentName”.
Change “Static” to “Logo”.
Remove all names with : (colon ) at the end of the name.

Dani Vainstein & Monika Arora Gautam

17

Why Renaming?











Sometimes there are two blanks instead of one; between two words.
According to my experience, nobody will make a new version for
such a mistake. Their answer ( R&D ) would be
“We will fix it later”.
For QTP this is critical, as it will not identify two spaces instead of
one.
The name “Static” says nothing to you and/or your colleagues, but
with “logo” you have no doubt.
QTP sometimes gives insignificant names to objects i.e. “button_1”
or “button_2”.
It is better to change these, to more descriptive names.
Changing logical names does not effect the QTP object recognition
mechanism.

Dani Vainstein & Monika Arora Gautam

18

Naming conventions

See the logical names
Convention changes

Dani Vainstein & Monika Arora Gautam

19

CheckDialog Reusable Action






We will learn how to check different dialog
messages that share same dialog title “Flight
Reservation”.
We will create a new reusable action inside the
guiLogin module, and we will call it
“CheckDialog”.
I will explain later, the considerations of this
decision.

Dani Vainstein & Monika Arora Gautam

20

Creating a new reusable action




From Menu : Insert  Call to New Action
Type : Hold the ALT key, and type ( I + N )
From toolbar as shown below:

Call to New Action

Dani Vainstein & Monika Arora Gautam

21

Adding a new reusable action
Name : CheckDialog

Description :
Manage all dialog checkpoints
under guiLogin

Reusable Action

Location : At the end of the test

Dani Vainstein & Monika Arora Gautam

22

CheckDialog Created




Now you should have two reusable actions.
Notice the actions listbox ( left ) and the
keyword view ( right ).

Dani Vainstein & Monika Arora Gautam

23

Mapping Dialogs



Move to Expert View Action CheckDialogs.
Open the local repository : Resources  Object
Repository
Or Type CTRL+R



Or from toolbar as shown below:




Object Repository

Dani Vainstein & Monika Arora Gautam

24

Mapping Dialogs






Open the Flight Reservation application if is not opened, and click
OK.
CAUTION : always be aware, specially when adding objects, that
you have only one instance of the AUT open.
What would happen? These child objects would be added under a
new “Dialog_2” parent object and would not be recognized during
playback.

Dani Vainstein & Monika Arora Gautam

25

Map Flight Reservations dialogs


Click OK to get Flight Reservations dialog.

Dani Vainstein & Monika Arora Gautam

26

Naming Conventions





Remove space between “Flight Reservation” and change it
to “FlightReservation".
Change the “static” to “Icon”.
Change “Please enter agent name” to “Msg”.

Dani Vainstein & Monika Arora Gautam

27

Mapping other dialogs?
Return to the same process and add all the objects/
dialog w.r.t. Logging in to Flight Application.
Try to map the following dialogs :







Why these are not added to the repository?

Dani Vainstein & Monika Arora Gautam

28

Mapping dialogs









That’s because all the messages has the same title “Flight
Reservations”.
For QTP all these dialogs are same.
Is it good? Of course! Otherwise you will have to map
every single message in your AUT.
But, what about the message displayed in the dialog?
The text is not the same.
This you will learn through the Object Identification
feature and the Object Spy in next upcoming slides.

Dani Vainstein & Monika Arora Gautam

29

Understanding object identification



Select the object Spy. From menu : Tools  Object Spy
Or from toolbar as shown below.

Object Spy

Dani Vainstein & Monika Arora Gautam

30

Object Spy




Dani Vainstein & Monika Arora Gautam

Click on the finger point and select the
message in the dialog.

Save a screenshot of the spy in “My
Pictures” and do same for this dialog
and compare properties for both the
messages.

31

Object Spy - Msg

Dani Vainstein & Monika Arora Gautam

32

Comparing



The properties are quite different. The key of the
mystery is the property window id, they are the
same = 65535.

Dani Vainstein & Monika Arora Gautam

33

Understanding The Object Identification


Another look to the repository will show us that the
object is identified by QTP using the native class and
window id, those properties have the same values

 You will see further,

why, this is a very big
advantage.

Dani Vainstein & Monika Arora Gautam

34

Highlight the Dialogs Messages in the
Application




Select the Msg object in the repository and Click the
“highlight in application” button while one of the popups is displayed, see what happens.
One by one do the same for other pop-ups, and see what
happens.

Highlight in application

Dani Vainstein & Monika Arora Gautam

35

Conclusion






Logically, QTP identifies all the messages inside
the same dialog as the only one message.
Imagine you have to map all the different
messages for same instance of dialog in your
AUT. It’s lot of job.
However QTP takes care of it by its Object
Identification and Spy feature.

Dani Vainstein & Monika Arora Gautam

36

Saving the Test



Save The Test.
Every Time you see * near the test name, it means that
the test is not saved. Always remember to save your
work.
Not Saved

Dani Vainstein & Monika Arora Gautam

37

Summary






We have created a new reusable action
guiLogin/guiLogin module
We a created a second new reusable action
guiLogin/CheckDialog
In this session we’ve learned how to map the Login
window and messages dialogs.

Dani Vainstein & Monika Arora Gautam

38

Special Thanks To


Bharathi Babu, India, Pune.



Ayyappa Koppolu, India, Pune.



Paul Grossman, USA, Chicago.



Sumit Singhal, India, Bangalore.



Sanjeev Mathur, India, Noida.



Manasa VN, India, Bangalore.



Prakash Kumar, India, Pune.



Richi Sharma, USA, New Jersey.



Janardhan Kalvakuntla, USA, New England.



Indlamudi Rajesh, India, Mumbai.

 Vainstein
Joydeep
Das,Arora
India,
Hyderabad.
Dani
& Monika
Gautam

39

Make sure to visit us for:






Tutorials
Articles
Projects
And much more

@
www.AdvancedQTP.com

Dani Vainstein & Monika Arora Gautam

40


Slide 27

Login Module

Building the Login GUI Layer Module

1

Topics covered







Create a new test, and classify it as a reusable
action under GUI Layer.
Adding Object to Local Object Repository.
Mapping Dialogs/ Objects.
Smart Identification.
Modify and save Test Settings.

Dani Vainstein & Monika Arora Gautam

2

Before you start…


Before starting the presentation, read about the
following topics in QTP help.






Reusable-Actions
Smart identification.
Action Parameters.
Object Spy.





Test Object Properties.
Run-time Object Properties.

Object Repository.

Dani Vainstein & Monika Arora Gautam

3

Things to Remember…




The Application Under Test (AUT) uses embedded
ActiveX objects, so when you first time open QTP, make
sure to check ActiveX option from Add-in manager.
When QTP is launched, be sure only the ActiveX option
is checked in the add-in manager.

Dani Vainstein & Monika Arora Gautam

4

guiLogin Module
Automation


FR
LIB
RA

Save the current test under
name = “guiLogin” in folder
FR\RA\GL

BL
GL

RS
DOC
DAT
SETTING

guiLogin

TESTS
RES
BATCH
ENV
Dani Vainstein & Monika Arora Gautam

5

guiLogin - Introduction








We are going to create a new Test and
reusable action.
The Test name would be guiLogin, because it
handles the “Login” dialog.
The main action will also called guiLogin. It
will be a reusable action, for further tests.
The guiLogin will receive an input parameter
of string type.

Dani Vainstein & Monika Arora Gautam

6

Modifying the Test Settings - Properties Tab

Description :
The guiLogin Module Stores all the actions required for the login process
Remark : associated add-ins : ActiveX only

Dani Vainstein & Monika Arora Gautam

7

Run Tab
Run one iteration only

Save The Test
Pop up
Message box
Disable Smart Identification
During the run session

Dani Vainstein & Monika Arora Gautam

8

Reusable action






We will create Reusable Action named guiLogin and set
the Action properties.
The guiLogin module ( reusable action ) implements all
the available actions on the Dialog login screen.
The Parameter StepName will be used as an instruction
to the reusable action i.e. “SetData”, “CheckLogo” etc.

Dani Vainstein & Monika Arora Gautam

9

guiLogin Reusable-Action


From Menu  Edit  Action  Action
Properties

Dani Vainstein & Monika Arora Gautam

10

guiLogin - General Tab
Change
Action
Name

Add
Description
Mark
Reusable

Dani Vainstein & Monika Arora Gautam

11

Parameters Tab – Add StepName


Add a new Input Parameter ( Click on + )
Add
StepName
Input
Parameter

Type
String

Dani Vainstein & Monika Arora Gautam

Add
Description

Default
Leave Empty

12

Mapping The Dialog Login







The guiLogin will hold a local repository.
The advantage of the OOT (Object Oriented Testing )
methodology, I think ( and others may disagree with me
) is that by having a reusable action per-screen, you
don’t have to maintain a shared object repository.
Especially when you work within a team, it helps
sparing the locks on the shared working files.
Mapping the application objects – is very important, you
should map your application before you start to “script”

Dani Vainstein & Monika Arora Gautam

13

Adding Objects to Local Repository




Open the Flight Application from Start  All Programs
 QuickTest Professional  Sample Applications 
Flight.
Do not login, just leave the window open.

Dani Vainstein & Monika Arora Gautam

14

Adding Objects to Local Repository





Open the local object repository from
menu  Resources  Object Repository.
Or just type Ctrl+R in QTP application.
QTP will show an hand icon.

Click Add objects in toolbar
Or
Object  Add objects To Local…

Dani Vainstein & Monika Arora Gautam

15

Mapping objects
Point the title-bar of dialog

Click OK
All Objects types

Click OK

Dani Vainstein & Monika Arora Gautam

16

Naming conventions



All the objects will be added to the local repository.
Remove spaces and non-alphanumeric characters from
Object Names.




Change “Agent Name:” to “AgentName”.
Change “Static” to “Logo”.
Remove all names with : (colon ) at the end of the name.

Dani Vainstein & Monika Arora Gautam

17

Why Renaming?











Sometimes there are two blanks instead of one; between two words.
According to my experience, nobody will make a new version for
such a mistake. Their answer ( R&D ) would be
“We will fix it later”.
For QTP this is critical, as it will not identify two spaces instead of
one.
The name “Static” says nothing to you and/or your colleagues, but
with “logo” you have no doubt.
QTP sometimes gives insignificant names to objects i.e. “button_1”
or “button_2”.
It is better to change these, to more descriptive names.
Changing logical names does not effect the QTP object recognition
mechanism.

Dani Vainstein & Monika Arora Gautam

18

Naming conventions

See the logical names
Convention changes

Dani Vainstein & Monika Arora Gautam

19

CheckDialog Reusable Action






We will learn how to check different dialog
messages that share same dialog title “Flight
Reservation”.
We will create a new reusable action inside the
guiLogin module, and we will call it
“CheckDialog”.
I will explain later, the considerations of this
decision.

Dani Vainstein & Monika Arora Gautam

20

Creating a new reusable action




From Menu : Insert  Call to New Action
Type : Hold the ALT key, and type ( I + N )
From toolbar as shown below:

Call to New Action

Dani Vainstein & Monika Arora Gautam

21

Adding a new reusable action
Name : CheckDialog

Description :
Manage all dialog checkpoints
under guiLogin

Reusable Action

Location : At the end of the test

Dani Vainstein & Monika Arora Gautam

22

CheckDialog Created




Now you should have two reusable actions.
Notice the actions listbox ( left ) and the
keyword view ( right ).

Dani Vainstein & Monika Arora Gautam

23

Mapping Dialogs



Move to Expert View Action CheckDialogs.
Open the local repository : Resources  Object
Repository
Or Type CTRL+R



Or from toolbar as shown below:




Object Repository

Dani Vainstein & Monika Arora Gautam

24

Mapping Dialogs






Open the Flight Reservation application if is not opened, and click
OK.
CAUTION : always be aware, specially when adding objects, that
you have only one instance of the AUT open.
What would happen? These child objects would be added under a
new “Dialog_2” parent object and would not be recognized during
playback.

Dani Vainstein & Monika Arora Gautam

25

Map Flight Reservations dialogs


Click OK to get Flight Reservations dialog.

Dani Vainstein & Monika Arora Gautam

26

Naming Conventions





Remove space between “Flight Reservation” and change it
to “FlightReservation".
Change the “static” to “Icon”.
Change “Please enter agent name” to “Msg”.

Dani Vainstein & Monika Arora Gautam

27

Mapping other dialogs?
Return to the same process and add all the objects/
dialog w.r.t. Logging in to Flight Application.
Try to map the following dialogs :







Why these are not added to the repository?

Dani Vainstein & Monika Arora Gautam

28

Mapping dialogs









That’s because all the messages has the same title “Flight
Reservations”.
For QTP all these dialogs are same.
Is it good? Of course! Otherwise you will have to map
every single message in your AUT.
But, what about the message displayed in the dialog?
The text is not the same.
This you will learn through the Object Identification
feature and the Object Spy in next upcoming slides.

Dani Vainstein & Monika Arora Gautam

29

Understanding object identification



Select the object Spy. From menu : Tools  Object Spy
Or from toolbar as shown below.

Object Spy

Dani Vainstein & Monika Arora Gautam

30

Object Spy




Dani Vainstein & Monika Arora Gautam

Click on the finger point and select the
message in the dialog.

Save a screenshot of the spy in “My
Pictures” and do same for this dialog
and compare properties for both the
messages.

31

Object Spy - Msg

Dani Vainstein & Monika Arora Gautam

32

Comparing



The properties are quite different. The key of the
mystery is the property window id, they are the
same = 65535.

Dani Vainstein & Monika Arora Gautam

33

Understanding The Object Identification


Another look to the repository will show us that the
object is identified by QTP using the native class and
window id, those properties have the same values

 You will see further,

why, this is a very big
advantage.

Dani Vainstein & Monika Arora Gautam

34

Highlight the Dialogs Messages in the
Application




Select the Msg object in the repository and Click the
“highlight in application” button while one of the popups is displayed, see what happens.
One by one do the same for other pop-ups, and see what
happens.

Highlight in application

Dani Vainstein & Monika Arora Gautam

35

Conclusion






Logically, QTP identifies all the messages inside
the same dialog as the only one message.
Imagine you have to map all the different
messages for same instance of dialog in your
AUT. It’s lot of job.
However QTP takes care of it by its Object
Identification and Spy feature.

Dani Vainstein & Monika Arora Gautam

36

Saving the Test



Save The Test.
Every Time you see * near the test name, it means that
the test is not saved. Always remember to save your
work.
Not Saved

Dani Vainstein & Monika Arora Gautam

37

Summary






We have created a new reusable action
guiLogin/guiLogin module
We a created a second new reusable action
guiLogin/CheckDialog
In this session we’ve learned how to map the Login
window and messages dialogs.

Dani Vainstein & Monika Arora Gautam

38

Special Thanks To


Bharathi Babu, India, Pune.



Ayyappa Koppolu, India, Pune.



Paul Grossman, USA, Chicago.



Sumit Singhal, India, Bangalore.



Sanjeev Mathur, India, Noida.



Manasa VN, India, Bangalore.



Prakash Kumar, India, Pune.



Richi Sharma, USA, New Jersey.



Janardhan Kalvakuntla, USA, New England.



Indlamudi Rajesh, India, Mumbai.

 Vainstein
Joydeep
Das,Arora
India,
Hyderabad.
Dani
& Monika
Gautam

39

Make sure to visit us for:






Tutorials
Articles
Projects
And much more

@
www.AdvancedQTP.com

Dani Vainstein & Monika Arora Gautam

40


Slide 28

Login Module

Building the Login GUI Layer Module

1

Topics covered







Create a new test, and classify it as a reusable
action under GUI Layer.
Adding Object to Local Object Repository.
Mapping Dialogs/ Objects.
Smart Identification.
Modify and save Test Settings.

Dani Vainstein & Monika Arora Gautam

2

Before you start…


Before starting the presentation, read about the
following topics in QTP help.






Reusable-Actions
Smart identification.
Action Parameters.
Object Spy.





Test Object Properties.
Run-time Object Properties.

Object Repository.

Dani Vainstein & Monika Arora Gautam

3

Things to Remember…




The Application Under Test (AUT) uses embedded
ActiveX objects, so when you first time open QTP, make
sure to check ActiveX option from Add-in manager.
When QTP is launched, be sure only the ActiveX option
is checked in the add-in manager.

Dani Vainstein & Monika Arora Gautam

4

guiLogin Module
Automation


FR
LIB
RA

Save the current test under
name = “guiLogin” in folder
FR\RA\GL

BL
GL

RS
DOC
DAT
SETTING

guiLogin

TESTS
RES
BATCH
ENV
Dani Vainstein & Monika Arora Gautam

5

guiLogin - Introduction








We are going to create a new Test and
reusable action.
The Test name would be guiLogin, because it
handles the “Login” dialog.
The main action will also called guiLogin. It
will be a reusable action, for further tests.
The guiLogin will receive an input parameter
of string type.

Dani Vainstein & Monika Arora Gautam

6

Modifying the Test Settings - Properties Tab

Description :
The guiLogin Module Stores all the actions required for the login process
Remark : associated add-ins : ActiveX only

Dani Vainstein & Monika Arora Gautam

7

Run Tab
Run one iteration only

Save The Test
Pop up
Message box
Disable Smart Identification
During the run session

Dani Vainstein & Monika Arora Gautam

8

Reusable action






We will create Reusable Action named guiLogin and set
the Action properties.
The guiLogin module ( reusable action ) implements all
the available actions on the Dialog login screen.
The Parameter StepName will be used as an instruction
to the reusable action i.e. “SetData”, “CheckLogo” etc.

Dani Vainstein & Monika Arora Gautam

9

guiLogin Reusable-Action


From Menu  Edit  Action  Action
Properties

Dani Vainstein & Monika Arora Gautam

10

guiLogin - General Tab
Change
Action
Name

Add
Description
Mark
Reusable

Dani Vainstein & Monika Arora Gautam

11

Parameters Tab – Add StepName


Add a new Input Parameter ( Click on + )
Add
StepName
Input
Parameter

Type
String

Dani Vainstein & Monika Arora Gautam

Add
Description

Default
Leave Empty

12

Mapping The Dialog Login







The guiLogin will hold a local repository.
The advantage of the OOT (Object Oriented Testing )
methodology, I think ( and others may disagree with me
) is that by having a reusable action per-screen, you
don’t have to maintain a shared object repository.
Especially when you work within a team, it helps
sparing the locks on the shared working files.
Mapping the application objects – is very important, you
should map your application before you start to “script”

Dani Vainstein & Monika Arora Gautam

13

Adding Objects to Local Repository




Open the Flight Application from Start  All Programs
 QuickTest Professional  Sample Applications 
Flight.
Do not login, just leave the window open.

Dani Vainstein & Monika Arora Gautam

14

Adding Objects to Local Repository





Open the local object repository from
menu  Resources  Object Repository.
Or just type Ctrl+R in QTP application.
QTP will show an hand icon.

Click Add objects in toolbar
Or
Object  Add objects To Local…

Dani Vainstein & Monika Arora Gautam

15

Mapping objects
Point the title-bar of dialog

Click OK
All Objects types

Click OK

Dani Vainstein & Monika Arora Gautam

16

Naming conventions



All the objects will be added to the local repository.
Remove spaces and non-alphanumeric characters from
Object Names.




Change “Agent Name:” to “AgentName”.
Change “Static” to “Logo”.
Remove all names with : (colon ) at the end of the name.

Dani Vainstein & Monika Arora Gautam

17

Why Renaming?











Sometimes there are two blanks instead of one; between two words.
According to my experience, nobody will make a new version for
such a mistake. Their answer ( R&D ) would be
“We will fix it later”.
For QTP this is critical, as it will not identify two spaces instead of
one.
The name “Static” says nothing to you and/or your colleagues, but
with “logo” you have no doubt.
QTP sometimes gives insignificant names to objects i.e. “button_1”
or “button_2”.
It is better to change these, to more descriptive names.
Changing logical names does not effect the QTP object recognition
mechanism.

Dani Vainstein & Monika Arora Gautam

18

Naming conventions

See the logical names
Convention changes

Dani Vainstein & Monika Arora Gautam

19

CheckDialog Reusable Action






We will learn how to check different dialog
messages that share same dialog title “Flight
Reservation”.
We will create a new reusable action inside the
guiLogin module, and we will call it
“CheckDialog”.
I will explain later, the considerations of this
decision.

Dani Vainstein & Monika Arora Gautam

20

Creating a new reusable action




From Menu : Insert  Call to New Action
Type : Hold the ALT key, and type ( I + N )
From toolbar as shown below:

Call to New Action

Dani Vainstein & Monika Arora Gautam

21

Adding a new reusable action
Name : CheckDialog

Description :
Manage all dialog checkpoints
under guiLogin

Reusable Action

Location : At the end of the test

Dani Vainstein & Monika Arora Gautam

22

CheckDialog Created




Now you should have two reusable actions.
Notice the actions listbox ( left ) and the
keyword view ( right ).

Dani Vainstein & Monika Arora Gautam

23

Mapping Dialogs



Move to Expert View Action CheckDialogs.
Open the local repository : Resources  Object
Repository
Or Type CTRL+R



Or from toolbar as shown below:




Object Repository

Dani Vainstein & Monika Arora Gautam

24

Mapping Dialogs






Open the Flight Reservation application if is not opened, and click
OK.
CAUTION : always be aware, specially when adding objects, that
you have only one instance of the AUT open.
What would happen? These child objects would be added under a
new “Dialog_2” parent object and would not be recognized during
playback.

Dani Vainstein & Monika Arora Gautam

25

Map Flight Reservations dialogs


Click OK to get Flight Reservations dialog.

Dani Vainstein & Monika Arora Gautam

26

Naming Conventions





Remove space between “Flight Reservation” and change it
to “FlightReservation".
Change the “static” to “Icon”.
Change “Please enter agent name” to “Msg”.

Dani Vainstein & Monika Arora Gautam

27

Mapping other dialogs?
Return to the same process and add all the objects/
dialog w.r.t. Logging in to Flight Application.
Try to map the following dialogs :







Why these are not added to the repository?

Dani Vainstein & Monika Arora Gautam

28

Mapping dialogs









That’s because all the messages has the same title “Flight
Reservations”.
For QTP all these dialogs are same.
Is it good? Of course! Otherwise you will have to map
every single message in your AUT.
But, what about the message displayed in the dialog?
The text is not the same.
This you will learn through the Object Identification
feature and the Object Spy in next upcoming slides.

Dani Vainstein & Monika Arora Gautam

29

Understanding object identification



Select the object Spy. From menu : Tools  Object Spy
Or from toolbar as shown below.

Object Spy

Dani Vainstein & Monika Arora Gautam

30

Object Spy




Dani Vainstein & Monika Arora Gautam

Click on the finger point and select the
message in the dialog.

Save a screenshot of the spy in “My
Pictures” and do same for this dialog
and compare properties for both the
messages.

31

Object Spy - Msg

Dani Vainstein & Monika Arora Gautam

32

Comparing



The properties are quite different. The key of the
mystery is the property window id, they are the
same = 65535.

Dani Vainstein & Monika Arora Gautam

33

Understanding The Object Identification


Another look to the repository will show us that the
object is identified by QTP using the native class and
window id, those properties have the same values

 You will see further,

why, this is a very big
advantage.

Dani Vainstein & Monika Arora Gautam

34

Highlight the Dialogs Messages in the
Application




Select the Msg object in the repository and Click the
“highlight in application” button while one of the popups is displayed, see what happens.
One by one do the same for other pop-ups, and see what
happens.

Highlight in application

Dani Vainstein & Monika Arora Gautam

35

Conclusion






Logically, QTP identifies all the messages inside
the same dialog as the only one message.
Imagine you have to map all the different
messages for same instance of dialog in your
AUT. It’s lot of job.
However QTP takes care of it by its Object
Identification and Spy feature.

Dani Vainstein & Monika Arora Gautam

36

Saving the Test



Save The Test.
Every Time you see * near the test name, it means that
the test is not saved. Always remember to save your
work.
Not Saved

Dani Vainstein & Monika Arora Gautam

37

Summary






We have created a new reusable action
guiLogin/guiLogin module
We a created a second new reusable action
guiLogin/CheckDialog
In this session we’ve learned how to map the Login
window and messages dialogs.

Dani Vainstein & Monika Arora Gautam

38

Special Thanks To


Bharathi Babu, India, Pune.



Ayyappa Koppolu, India, Pune.



Paul Grossman, USA, Chicago.



Sumit Singhal, India, Bangalore.



Sanjeev Mathur, India, Noida.



Manasa VN, India, Bangalore.



Prakash Kumar, India, Pune.



Richi Sharma, USA, New Jersey.



Janardhan Kalvakuntla, USA, New England.



Indlamudi Rajesh, India, Mumbai.

 Vainstein
Joydeep
Das,Arora
India,
Hyderabad.
Dani
& Monika
Gautam

39

Make sure to visit us for:






Tutorials
Articles
Projects
And much more

@
www.AdvancedQTP.com

Dani Vainstein & Monika Arora Gautam

40


Slide 29

Login Module

Building the Login GUI Layer Module

1

Topics covered







Create a new test, and classify it as a reusable
action under GUI Layer.
Adding Object to Local Object Repository.
Mapping Dialogs/ Objects.
Smart Identification.
Modify and save Test Settings.

Dani Vainstein & Monika Arora Gautam

2

Before you start…


Before starting the presentation, read about the
following topics in QTP help.






Reusable-Actions
Smart identification.
Action Parameters.
Object Spy.





Test Object Properties.
Run-time Object Properties.

Object Repository.

Dani Vainstein & Monika Arora Gautam

3

Things to Remember…




The Application Under Test (AUT) uses embedded
ActiveX objects, so when you first time open QTP, make
sure to check ActiveX option from Add-in manager.
When QTP is launched, be sure only the ActiveX option
is checked in the add-in manager.

Dani Vainstein & Monika Arora Gautam

4

guiLogin Module
Automation


FR
LIB
RA

Save the current test under
name = “guiLogin” in folder
FR\RA\GL

BL
GL

RS
DOC
DAT
SETTING

guiLogin

TESTS
RES
BATCH
ENV
Dani Vainstein & Monika Arora Gautam

5

guiLogin - Introduction








We are going to create a new Test and
reusable action.
The Test name would be guiLogin, because it
handles the “Login” dialog.
The main action will also called guiLogin. It
will be a reusable action, for further tests.
The guiLogin will receive an input parameter
of string type.

Dani Vainstein & Monika Arora Gautam

6

Modifying the Test Settings - Properties Tab

Description :
The guiLogin Module Stores all the actions required for the login process
Remark : associated add-ins : ActiveX only

Dani Vainstein & Monika Arora Gautam

7

Run Tab
Run one iteration only

Save The Test
Pop up
Message box
Disable Smart Identification
During the run session

Dani Vainstein & Monika Arora Gautam

8

Reusable action






We will create Reusable Action named guiLogin and set
the Action properties.
The guiLogin module ( reusable action ) implements all
the available actions on the Dialog login screen.
The Parameter StepName will be used as an instruction
to the reusable action i.e. “SetData”, “CheckLogo” etc.

Dani Vainstein & Monika Arora Gautam

9

guiLogin Reusable-Action


From Menu  Edit  Action  Action
Properties

Dani Vainstein & Monika Arora Gautam

10

guiLogin - General Tab
Change
Action
Name

Add
Description
Mark
Reusable

Dani Vainstein & Monika Arora Gautam

11

Parameters Tab – Add StepName


Add a new Input Parameter ( Click on + )
Add
StepName
Input
Parameter

Type
String

Dani Vainstein & Monika Arora Gautam

Add
Description

Default
Leave Empty

12

Mapping The Dialog Login







The guiLogin will hold a local repository.
The advantage of the OOT (Object Oriented Testing )
methodology, I think ( and others may disagree with me
) is that by having a reusable action per-screen, you
don’t have to maintain a shared object repository.
Especially when you work within a team, it helps
sparing the locks on the shared working files.
Mapping the application objects – is very important, you
should map your application before you start to “script”

Dani Vainstein & Monika Arora Gautam

13

Adding Objects to Local Repository




Open the Flight Application from Start  All Programs
 QuickTest Professional  Sample Applications 
Flight.
Do not login, just leave the window open.

Dani Vainstein & Monika Arora Gautam

14

Adding Objects to Local Repository





Open the local object repository from
menu  Resources  Object Repository.
Or just type Ctrl+R in QTP application.
QTP will show an hand icon.

Click Add objects in toolbar
Or
Object  Add objects To Local…

Dani Vainstein & Monika Arora Gautam

15

Mapping objects
Point the title-bar of dialog

Click OK
All Objects types

Click OK

Dani Vainstein & Monika Arora Gautam

16

Naming conventions



All the objects will be added to the local repository.
Remove spaces and non-alphanumeric characters from
Object Names.




Change “Agent Name:” to “AgentName”.
Change “Static” to “Logo”.
Remove all names with : (colon ) at the end of the name.

Dani Vainstein & Monika Arora Gautam

17

Why Renaming?











Sometimes there are two blanks instead of one; between two words.
According to my experience, nobody will make a new version for
such a mistake. Their answer ( R&D ) would be
“We will fix it later”.
For QTP this is critical, as it will not identify two spaces instead of
one.
The name “Static” says nothing to you and/or your colleagues, but
with “logo” you have no doubt.
QTP sometimes gives insignificant names to objects i.e. “button_1”
or “button_2”.
It is better to change these, to more descriptive names.
Changing logical names does not effect the QTP object recognition
mechanism.

Dani Vainstein & Monika Arora Gautam

18

Naming conventions

See the logical names
Convention changes

Dani Vainstein & Monika Arora Gautam

19

CheckDialog Reusable Action






We will learn how to check different dialog
messages that share same dialog title “Flight
Reservation”.
We will create a new reusable action inside the
guiLogin module, and we will call it
“CheckDialog”.
I will explain later, the considerations of this
decision.

Dani Vainstein & Monika Arora Gautam

20

Creating a new reusable action




From Menu : Insert  Call to New Action
Type : Hold the ALT key, and type ( I + N )
From toolbar as shown below:

Call to New Action

Dani Vainstein & Monika Arora Gautam

21

Adding a new reusable action
Name : CheckDialog

Description :
Manage all dialog checkpoints
under guiLogin

Reusable Action

Location : At the end of the test

Dani Vainstein & Monika Arora Gautam

22

CheckDialog Created




Now you should have two reusable actions.
Notice the actions listbox ( left ) and the
keyword view ( right ).

Dani Vainstein & Monika Arora Gautam

23

Mapping Dialogs



Move to Expert View Action CheckDialogs.
Open the local repository : Resources  Object
Repository
Or Type CTRL+R



Or from toolbar as shown below:




Object Repository

Dani Vainstein & Monika Arora Gautam

24

Mapping Dialogs






Open the Flight Reservation application if is not opened, and click
OK.
CAUTION : always be aware, specially when adding objects, that
you have only one instance of the AUT open.
What would happen? These child objects would be added under a
new “Dialog_2” parent object and would not be recognized during
playback.

Dani Vainstein & Monika Arora Gautam

25

Map Flight Reservations dialogs


Click OK to get Flight Reservations dialog.

Dani Vainstein & Monika Arora Gautam

26

Naming Conventions





Remove space between “Flight Reservation” and change it
to “FlightReservation".
Change the “static” to “Icon”.
Change “Please enter agent name” to “Msg”.

Dani Vainstein & Monika Arora Gautam

27

Mapping other dialogs?
Return to the same process and add all the objects/
dialog w.r.t. Logging in to Flight Application.
Try to map the following dialogs :







Why these are not added to the repository?

Dani Vainstein & Monika Arora Gautam

28

Mapping dialogs









That’s because all the messages has the same title “Flight
Reservations”.
For QTP all these dialogs are same.
Is it good? Of course! Otherwise you will have to map
every single message in your AUT.
But, what about the message displayed in the dialog?
The text is not the same.
This you will learn through the Object Identification
feature and the Object Spy in next upcoming slides.

Dani Vainstein & Monika Arora Gautam

29

Understanding object identification



Select the object Spy. From menu : Tools  Object Spy
Or from toolbar as shown below.

Object Spy

Dani Vainstein & Monika Arora Gautam

30

Object Spy




Dani Vainstein & Monika Arora Gautam

Click on the finger point and select the
message in the dialog.

Save a screenshot of the spy in “My
Pictures” and do same for this dialog
and compare properties for both the
messages.

31

Object Spy - Msg

Dani Vainstein & Monika Arora Gautam

32

Comparing



The properties are quite different. The key of the
mystery is the property window id, they are the
same = 65535.

Dani Vainstein & Monika Arora Gautam

33

Understanding The Object Identification


Another look to the repository will show us that the
object is identified by QTP using the native class and
window id, those properties have the same values

 You will see further,

why, this is a very big
advantage.

Dani Vainstein & Monika Arora Gautam

34

Highlight the Dialogs Messages in the
Application




Select the Msg object in the repository and Click the
“highlight in application” button while one of the popups is displayed, see what happens.
One by one do the same for other pop-ups, and see what
happens.

Highlight in application

Dani Vainstein & Monika Arora Gautam

35

Conclusion






Logically, QTP identifies all the messages inside
the same dialog as the only one message.
Imagine you have to map all the different
messages for same instance of dialog in your
AUT. It’s lot of job.
However QTP takes care of it by its Object
Identification and Spy feature.

Dani Vainstein & Monika Arora Gautam

36

Saving the Test



Save The Test.
Every Time you see * near the test name, it means that
the test is not saved. Always remember to save your
work.
Not Saved

Dani Vainstein & Monika Arora Gautam

37

Summary






We have created a new reusable action
guiLogin/guiLogin module
We a created a second new reusable action
guiLogin/CheckDialog
In this session we’ve learned how to map the Login
window and messages dialogs.

Dani Vainstein & Monika Arora Gautam

38

Special Thanks To


Bharathi Babu, India, Pune.



Ayyappa Koppolu, India, Pune.



Paul Grossman, USA, Chicago.



Sumit Singhal, India, Bangalore.



Sanjeev Mathur, India, Noida.



Manasa VN, India, Bangalore.



Prakash Kumar, India, Pune.



Richi Sharma, USA, New Jersey.



Janardhan Kalvakuntla, USA, New England.



Indlamudi Rajesh, India, Mumbai.

 Vainstein
Joydeep
Das,Arora
India,
Hyderabad.
Dani
& Monika
Gautam

39

Make sure to visit us for:






Tutorials
Articles
Projects
And much more

@
www.AdvancedQTP.com

Dani Vainstein & Monika Arora Gautam

40


Slide 30

Login Module

Building the Login GUI Layer Module

1

Topics covered







Create a new test, and classify it as a reusable
action under GUI Layer.
Adding Object to Local Object Repository.
Mapping Dialogs/ Objects.
Smart Identification.
Modify and save Test Settings.

Dani Vainstein & Monika Arora Gautam

2

Before you start…


Before starting the presentation, read about the
following topics in QTP help.






Reusable-Actions
Smart identification.
Action Parameters.
Object Spy.





Test Object Properties.
Run-time Object Properties.

Object Repository.

Dani Vainstein & Monika Arora Gautam

3

Things to Remember…




The Application Under Test (AUT) uses embedded
ActiveX objects, so when you first time open QTP, make
sure to check ActiveX option from Add-in manager.
When QTP is launched, be sure only the ActiveX option
is checked in the add-in manager.

Dani Vainstein & Monika Arora Gautam

4

guiLogin Module
Automation


FR
LIB
RA

Save the current test under
name = “guiLogin” in folder
FR\RA\GL

BL
GL

RS
DOC
DAT
SETTING

guiLogin

TESTS
RES
BATCH
ENV
Dani Vainstein & Monika Arora Gautam

5

guiLogin - Introduction








We are going to create a new Test and
reusable action.
The Test name would be guiLogin, because it
handles the “Login” dialog.
The main action will also called guiLogin. It
will be a reusable action, for further tests.
The guiLogin will receive an input parameter
of string type.

Dani Vainstein & Monika Arora Gautam

6

Modifying the Test Settings - Properties Tab

Description :
The guiLogin Module Stores all the actions required for the login process
Remark : associated add-ins : ActiveX only

Dani Vainstein & Monika Arora Gautam

7

Run Tab
Run one iteration only

Save The Test
Pop up
Message box
Disable Smart Identification
During the run session

Dani Vainstein & Monika Arora Gautam

8

Reusable action






We will create Reusable Action named guiLogin and set
the Action properties.
The guiLogin module ( reusable action ) implements all
the available actions on the Dialog login screen.
The Parameter StepName will be used as an instruction
to the reusable action i.e. “SetData”, “CheckLogo” etc.

Dani Vainstein & Monika Arora Gautam

9

guiLogin Reusable-Action


From Menu  Edit  Action  Action
Properties

Dani Vainstein & Monika Arora Gautam

10

guiLogin - General Tab
Change
Action
Name

Add
Description
Mark
Reusable

Dani Vainstein & Monika Arora Gautam

11

Parameters Tab – Add StepName


Add a new Input Parameter ( Click on + )
Add
StepName
Input
Parameter

Type
String

Dani Vainstein & Monika Arora Gautam

Add
Description

Default
Leave Empty

12

Mapping The Dialog Login







The guiLogin will hold a local repository.
The advantage of the OOT (Object Oriented Testing )
methodology, I think ( and others may disagree with me
) is that by having a reusable action per-screen, you
don’t have to maintain a shared object repository.
Especially when you work within a team, it helps
sparing the locks on the shared working files.
Mapping the application objects – is very important, you
should map your application before you start to “script”

Dani Vainstein & Monika Arora Gautam

13

Adding Objects to Local Repository




Open the Flight Application from Start  All Programs
 QuickTest Professional  Sample Applications 
Flight.
Do not login, just leave the window open.

Dani Vainstein & Monika Arora Gautam

14

Adding Objects to Local Repository





Open the local object repository from
menu  Resources  Object Repository.
Or just type Ctrl+R in QTP application.
QTP will show an hand icon.

Click Add objects in toolbar
Or
Object  Add objects To Local…

Dani Vainstein & Monika Arora Gautam

15

Mapping objects
Point the title-bar of dialog

Click OK
All Objects types

Click OK

Dani Vainstein & Monika Arora Gautam

16

Naming conventions



All the objects will be added to the local repository.
Remove spaces and non-alphanumeric characters from
Object Names.




Change “Agent Name:” to “AgentName”.
Change “Static” to “Logo”.
Remove all names with : (colon ) at the end of the name.

Dani Vainstein & Monika Arora Gautam

17

Why Renaming?











Sometimes there are two blanks instead of one; between two words.
According to my experience, nobody will make a new version for
such a mistake. Their answer ( R&D ) would be
“We will fix it later”.
For QTP this is critical, as it will not identify two spaces instead of
one.
The name “Static” says nothing to you and/or your colleagues, but
with “logo” you have no doubt.
QTP sometimes gives insignificant names to objects i.e. “button_1”
or “button_2”.
It is better to change these, to more descriptive names.
Changing logical names does not effect the QTP object recognition
mechanism.

Dani Vainstein & Monika Arora Gautam

18

Naming conventions

See the logical names
Convention changes

Dani Vainstein & Monika Arora Gautam

19

CheckDialog Reusable Action






We will learn how to check different dialog
messages that share same dialog title “Flight
Reservation”.
We will create a new reusable action inside the
guiLogin module, and we will call it
“CheckDialog”.
I will explain later, the considerations of this
decision.

Dani Vainstein & Monika Arora Gautam

20

Creating a new reusable action




From Menu : Insert  Call to New Action
Type : Hold the ALT key, and type ( I + N )
From toolbar as shown below:

Call to New Action

Dani Vainstein & Monika Arora Gautam

21

Adding a new reusable action
Name : CheckDialog

Description :
Manage all dialog checkpoints
under guiLogin

Reusable Action

Location : At the end of the test

Dani Vainstein & Monika Arora Gautam

22

CheckDialog Created




Now you should have two reusable actions.
Notice the actions listbox ( left ) and the
keyword view ( right ).

Dani Vainstein & Monika Arora Gautam

23

Mapping Dialogs



Move to Expert View Action CheckDialogs.
Open the local repository : Resources  Object
Repository
Or Type CTRL+R



Or from toolbar as shown below:




Object Repository

Dani Vainstein & Monika Arora Gautam

24

Mapping Dialogs






Open the Flight Reservation application if is not opened, and click
OK.
CAUTION : always be aware, specially when adding objects, that
you have only one instance of the AUT open.
What would happen? These child objects would be added under a
new “Dialog_2” parent object and would not be recognized during
playback.

Dani Vainstein & Monika Arora Gautam

25

Map Flight Reservations dialogs


Click OK to get Flight Reservations dialog.

Dani Vainstein & Monika Arora Gautam

26

Naming Conventions





Remove space between “Flight Reservation” and change it
to “FlightReservation".
Change the “static” to “Icon”.
Change “Please enter agent name” to “Msg”.

Dani Vainstein & Monika Arora Gautam

27

Mapping other dialogs?
Return to the same process and add all the objects/
dialog w.r.t. Logging in to Flight Application.
Try to map the following dialogs :







Why these are not added to the repository?

Dani Vainstein & Monika Arora Gautam

28

Mapping dialogs









That’s because all the messages has the same title “Flight
Reservations”.
For QTP all these dialogs are same.
Is it good? Of course! Otherwise you will have to map
every single message in your AUT.
But, what about the message displayed in the dialog?
The text is not the same.
This you will learn through the Object Identification
feature and the Object Spy in next upcoming slides.

Dani Vainstein & Monika Arora Gautam

29

Understanding object identification



Select the object Spy. From menu : Tools  Object Spy
Or from toolbar as shown below.

Object Spy

Dani Vainstein & Monika Arora Gautam

30

Object Spy




Dani Vainstein & Monika Arora Gautam

Click on the finger point and select the
message in the dialog.

Save a screenshot of the spy in “My
Pictures” and do same for this dialog
and compare properties for both the
messages.

31

Object Spy - Msg

Dani Vainstein & Monika Arora Gautam

32

Comparing



The properties are quite different. The key of the
mystery is the property window id, they are the
same = 65535.

Dani Vainstein & Monika Arora Gautam

33

Understanding The Object Identification


Another look to the repository will show us that the
object is identified by QTP using the native class and
window id, those properties have the same values

 You will see further,

why, this is a very big
advantage.

Dani Vainstein & Monika Arora Gautam

34

Highlight the Dialogs Messages in the
Application




Select the Msg object in the repository and Click the
“highlight in application” button while one of the popups is displayed, see what happens.
One by one do the same for other pop-ups, and see what
happens.

Highlight in application

Dani Vainstein & Monika Arora Gautam

35

Conclusion






Logically, QTP identifies all the messages inside
the same dialog as the only one message.
Imagine you have to map all the different
messages for same instance of dialog in your
AUT. It’s lot of job.
However QTP takes care of it by its Object
Identification and Spy feature.

Dani Vainstein & Monika Arora Gautam

36

Saving the Test



Save The Test.
Every Time you see * near the test name, it means that
the test is not saved. Always remember to save your
work.
Not Saved

Dani Vainstein & Monika Arora Gautam

37

Summary






We have created a new reusable action
guiLogin/guiLogin module
We a created a second new reusable action
guiLogin/CheckDialog
In this session we’ve learned how to map the Login
window and messages dialogs.

Dani Vainstein & Monika Arora Gautam

38

Special Thanks To


Bharathi Babu, India, Pune.



Ayyappa Koppolu, India, Pune.



Paul Grossman, USA, Chicago.



Sumit Singhal, India, Bangalore.



Sanjeev Mathur, India, Noida.



Manasa VN, India, Bangalore.



Prakash Kumar, India, Pune.



Richi Sharma, USA, New Jersey.



Janardhan Kalvakuntla, USA, New England.



Indlamudi Rajesh, India, Mumbai.

 Vainstein
Joydeep
Das,Arora
India,
Hyderabad.
Dani
& Monika
Gautam

39

Make sure to visit us for:






Tutorials
Articles
Projects
And much more

@
www.AdvancedQTP.com

Dani Vainstein & Monika Arora Gautam

40


Slide 31

Login Module

Building the Login GUI Layer Module

1

Topics covered







Create a new test, and classify it as a reusable
action under GUI Layer.
Adding Object to Local Object Repository.
Mapping Dialogs/ Objects.
Smart Identification.
Modify and save Test Settings.

Dani Vainstein & Monika Arora Gautam

2

Before you start…


Before starting the presentation, read about the
following topics in QTP help.






Reusable-Actions
Smart identification.
Action Parameters.
Object Spy.





Test Object Properties.
Run-time Object Properties.

Object Repository.

Dani Vainstein & Monika Arora Gautam

3

Things to Remember…




The Application Under Test (AUT) uses embedded
ActiveX objects, so when you first time open QTP, make
sure to check ActiveX option from Add-in manager.
When QTP is launched, be sure only the ActiveX option
is checked in the add-in manager.

Dani Vainstein & Monika Arora Gautam

4

guiLogin Module
Automation


FR
LIB
RA

Save the current test under
name = “guiLogin” in folder
FR\RA\GL

BL
GL

RS
DOC
DAT
SETTING

guiLogin

TESTS
RES
BATCH
ENV
Dani Vainstein & Monika Arora Gautam

5

guiLogin - Introduction








We are going to create a new Test and
reusable action.
The Test name would be guiLogin, because it
handles the “Login” dialog.
The main action will also called guiLogin. It
will be a reusable action, for further tests.
The guiLogin will receive an input parameter
of string type.

Dani Vainstein & Monika Arora Gautam

6

Modifying the Test Settings - Properties Tab

Description :
The guiLogin Module Stores all the actions required for the login process
Remark : associated add-ins : ActiveX only

Dani Vainstein & Monika Arora Gautam

7

Run Tab
Run one iteration only

Save The Test
Pop up
Message box
Disable Smart Identification
During the run session

Dani Vainstein & Monika Arora Gautam

8

Reusable action






We will create Reusable Action named guiLogin and set
the Action properties.
The guiLogin module ( reusable action ) implements all
the available actions on the Dialog login screen.
The Parameter StepName will be used as an instruction
to the reusable action i.e. “SetData”, “CheckLogo” etc.

Dani Vainstein & Monika Arora Gautam

9

guiLogin Reusable-Action


From Menu  Edit  Action  Action
Properties

Dani Vainstein & Monika Arora Gautam

10

guiLogin - General Tab
Change
Action
Name

Add
Description
Mark
Reusable

Dani Vainstein & Monika Arora Gautam

11

Parameters Tab – Add StepName


Add a new Input Parameter ( Click on + )
Add
StepName
Input
Parameter

Type
String

Dani Vainstein & Monika Arora Gautam

Add
Description

Default
Leave Empty

12

Mapping The Dialog Login







The guiLogin will hold a local repository.
The advantage of the OOT (Object Oriented Testing )
methodology, I think ( and others may disagree with me
) is that by having a reusable action per-screen, you
don’t have to maintain a shared object repository.
Especially when you work within a team, it helps
sparing the locks on the shared working files.
Mapping the application objects – is very important, you
should map your application before you start to “script”

Dani Vainstein & Monika Arora Gautam

13

Adding Objects to Local Repository




Open the Flight Application from Start  All Programs
 QuickTest Professional  Sample Applications 
Flight.
Do not login, just leave the window open.

Dani Vainstein & Monika Arora Gautam

14

Adding Objects to Local Repository





Open the local object repository from
menu  Resources  Object Repository.
Or just type Ctrl+R in QTP application.
QTP will show an hand icon.

Click Add objects in toolbar
Or
Object  Add objects To Local…

Dani Vainstein & Monika Arora Gautam

15

Mapping objects
Point the title-bar of dialog

Click OK
All Objects types

Click OK

Dani Vainstein & Monika Arora Gautam

16

Naming conventions



All the objects will be added to the local repository.
Remove spaces and non-alphanumeric characters from
Object Names.




Change “Agent Name:” to “AgentName”.
Change “Static” to “Logo”.
Remove all names with : (colon ) at the end of the name.

Dani Vainstein & Monika Arora Gautam

17

Why Renaming?











Sometimes there are two blanks instead of one; between two words.
According to my experience, nobody will make a new version for
such a mistake. Their answer ( R&D ) would be
“We will fix it later”.
For QTP this is critical, as it will not identify two spaces instead of
one.
The name “Static” says nothing to you and/or your colleagues, but
with “logo” you have no doubt.
QTP sometimes gives insignificant names to objects i.e. “button_1”
or “button_2”.
It is better to change these, to more descriptive names.
Changing logical names does not effect the QTP object recognition
mechanism.

Dani Vainstein & Monika Arora Gautam

18

Naming conventions

See the logical names
Convention changes

Dani Vainstein & Monika Arora Gautam

19

CheckDialog Reusable Action






We will learn how to check different dialog
messages that share same dialog title “Flight
Reservation”.
We will create a new reusable action inside the
guiLogin module, and we will call it
“CheckDialog”.
I will explain later, the considerations of this
decision.

Dani Vainstein & Monika Arora Gautam

20

Creating a new reusable action




From Menu : Insert  Call to New Action
Type : Hold the ALT key, and type ( I + N )
From toolbar as shown below:

Call to New Action

Dani Vainstein & Monika Arora Gautam

21

Adding a new reusable action
Name : CheckDialog

Description :
Manage all dialog checkpoints
under guiLogin

Reusable Action

Location : At the end of the test

Dani Vainstein & Monika Arora Gautam

22

CheckDialog Created




Now you should have two reusable actions.
Notice the actions listbox ( left ) and the
keyword view ( right ).

Dani Vainstein & Monika Arora Gautam

23

Mapping Dialogs



Move to Expert View Action CheckDialogs.
Open the local repository : Resources  Object
Repository
Or Type CTRL+R



Or from toolbar as shown below:




Object Repository

Dani Vainstein & Monika Arora Gautam

24

Mapping Dialogs






Open the Flight Reservation application if is not opened, and click
OK.
CAUTION : always be aware, specially when adding objects, that
you have only one instance of the AUT open.
What would happen? These child objects would be added under a
new “Dialog_2” parent object and would not be recognized during
playback.

Dani Vainstein & Monika Arora Gautam

25

Map Flight Reservations dialogs


Click OK to get Flight Reservations dialog.

Dani Vainstein & Monika Arora Gautam

26

Naming Conventions





Remove space between “Flight Reservation” and change it
to “FlightReservation".
Change the “static” to “Icon”.
Change “Please enter agent name” to “Msg”.

Dani Vainstein & Monika Arora Gautam

27

Mapping other dialogs?
Return to the same process and add all the objects/
dialog w.r.t. Logging in to Flight Application.
Try to map the following dialogs :







Why these are not added to the repository?

Dani Vainstein & Monika Arora Gautam

28

Mapping dialogs









That’s because all the messages has the same title “Flight
Reservations”.
For QTP all these dialogs are same.
Is it good? Of course! Otherwise you will have to map
every single message in your AUT.
But, what about the message displayed in the dialog?
The text is not the same.
This you will learn through the Object Identification
feature and the Object Spy in next upcoming slides.

Dani Vainstein & Monika Arora Gautam

29

Understanding object identification



Select the object Spy. From menu : Tools  Object Spy
Or from toolbar as shown below.

Object Spy

Dani Vainstein & Monika Arora Gautam

30

Object Spy




Dani Vainstein & Monika Arora Gautam

Click on the finger point and select the
message in the dialog.

Save a screenshot of the spy in “My
Pictures” and do same for this dialog
and compare properties for both the
messages.

31

Object Spy - Msg

Dani Vainstein & Monika Arora Gautam

32

Comparing



The properties are quite different. The key of the
mystery is the property window id, they are the
same = 65535.

Dani Vainstein & Monika Arora Gautam

33

Understanding The Object Identification


Another look to the repository will show us that the
object is identified by QTP using the native class and
window id, those properties have the same values

 You will see further,

why, this is a very big
advantage.

Dani Vainstein & Monika Arora Gautam

34

Highlight the Dialogs Messages in the
Application




Select the Msg object in the repository and Click the
“highlight in application” button while one of the popups is displayed, see what happens.
One by one do the same for other pop-ups, and see what
happens.

Highlight in application

Dani Vainstein & Monika Arora Gautam

35

Conclusion






Logically, QTP identifies all the messages inside
the same dialog as the only one message.
Imagine you have to map all the different
messages for same instance of dialog in your
AUT. It’s lot of job.
However QTP takes care of it by its Object
Identification and Spy feature.

Dani Vainstein & Monika Arora Gautam

36

Saving the Test



Save The Test.
Every Time you see * near the test name, it means that
the test is not saved. Always remember to save your
work.
Not Saved

Dani Vainstein & Monika Arora Gautam

37

Summary






We have created a new reusable action
guiLogin/guiLogin module
We a created a second new reusable action
guiLogin/CheckDialog
In this session we’ve learned how to map the Login
window and messages dialogs.

Dani Vainstein & Monika Arora Gautam

38

Special Thanks To


Bharathi Babu, India, Pune.



Ayyappa Koppolu, India, Pune.



Paul Grossman, USA, Chicago.



Sumit Singhal, India, Bangalore.



Sanjeev Mathur, India, Noida.



Manasa VN, India, Bangalore.



Prakash Kumar, India, Pune.



Richi Sharma, USA, New Jersey.



Janardhan Kalvakuntla, USA, New England.



Indlamudi Rajesh, India, Mumbai.

 Vainstein
Joydeep
Das,Arora
India,
Hyderabad.
Dani
& Monika
Gautam

39

Make sure to visit us for:






Tutorials
Articles
Projects
And much more

@
www.AdvancedQTP.com

Dani Vainstein & Monika Arora Gautam

40


Slide 32

Login Module

Building the Login GUI Layer Module

1

Topics covered







Create a new test, and classify it as a reusable
action under GUI Layer.
Adding Object to Local Object Repository.
Mapping Dialogs/ Objects.
Smart Identification.
Modify and save Test Settings.

Dani Vainstein & Monika Arora Gautam

2

Before you start…


Before starting the presentation, read about the
following topics in QTP help.






Reusable-Actions
Smart identification.
Action Parameters.
Object Spy.





Test Object Properties.
Run-time Object Properties.

Object Repository.

Dani Vainstein & Monika Arora Gautam

3

Things to Remember…




The Application Under Test (AUT) uses embedded
ActiveX objects, so when you first time open QTP, make
sure to check ActiveX option from Add-in manager.
When QTP is launched, be sure only the ActiveX option
is checked in the add-in manager.

Dani Vainstein & Monika Arora Gautam

4

guiLogin Module
Automation


FR
LIB
RA

Save the current test under
name = “guiLogin” in folder
FR\RA\GL

BL
GL

RS
DOC
DAT
SETTING

guiLogin

TESTS
RES
BATCH
ENV
Dani Vainstein & Monika Arora Gautam

5

guiLogin - Introduction








We are going to create a new Test and
reusable action.
The Test name would be guiLogin, because it
handles the “Login” dialog.
The main action will also called guiLogin. It
will be a reusable action, for further tests.
The guiLogin will receive an input parameter
of string type.

Dani Vainstein & Monika Arora Gautam

6

Modifying the Test Settings - Properties Tab

Description :
The guiLogin Module Stores all the actions required for the login process
Remark : associated add-ins : ActiveX only

Dani Vainstein & Monika Arora Gautam

7

Run Tab
Run one iteration only

Save The Test
Pop up
Message box
Disable Smart Identification
During the run session

Dani Vainstein & Monika Arora Gautam

8

Reusable action






We will create Reusable Action named guiLogin and set
the Action properties.
The guiLogin module ( reusable action ) implements all
the available actions on the Dialog login screen.
The Parameter StepName will be used as an instruction
to the reusable action i.e. “SetData”, “CheckLogo” etc.

Dani Vainstein & Monika Arora Gautam

9

guiLogin Reusable-Action


From Menu  Edit  Action  Action
Properties

Dani Vainstein & Monika Arora Gautam

10

guiLogin - General Tab
Change
Action
Name

Add
Description
Mark
Reusable

Dani Vainstein & Monika Arora Gautam

11

Parameters Tab – Add StepName


Add a new Input Parameter ( Click on + )
Add
StepName
Input
Parameter

Type
String

Dani Vainstein & Monika Arora Gautam

Add
Description

Default
Leave Empty

12

Mapping The Dialog Login







The guiLogin will hold a local repository.
The advantage of the OOT (Object Oriented Testing )
methodology, I think ( and others may disagree with me
) is that by having a reusable action per-screen, you
don’t have to maintain a shared object repository.
Especially when you work within a team, it helps
sparing the locks on the shared working files.
Mapping the application objects – is very important, you
should map your application before you start to “script”

Dani Vainstein & Monika Arora Gautam

13

Adding Objects to Local Repository




Open the Flight Application from Start  All Programs
 QuickTest Professional  Sample Applications 
Flight.
Do not login, just leave the window open.

Dani Vainstein & Monika Arora Gautam

14

Adding Objects to Local Repository





Open the local object repository from
menu  Resources  Object Repository.
Or just type Ctrl+R in QTP application.
QTP will show an hand icon.

Click Add objects in toolbar
Or
Object  Add objects To Local…

Dani Vainstein & Monika Arora Gautam

15

Mapping objects
Point the title-bar of dialog

Click OK
All Objects types

Click OK

Dani Vainstein & Monika Arora Gautam

16

Naming conventions



All the objects will be added to the local repository.
Remove spaces and non-alphanumeric characters from
Object Names.




Change “Agent Name:” to “AgentName”.
Change “Static” to “Logo”.
Remove all names with : (colon ) at the end of the name.

Dani Vainstein & Monika Arora Gautam

17

Why Renaming?











Sometimes there are two blanks instead of one; between two words.
According to my experience, nobody will make a new version for
such a mistake. Their answer ( R&D ) would be
“We will fix it later”.
For QTP this is critical, as it will not identify two spaces instead of
one.
The name “Static” says nothing to you and/or your colleagues, but
with “logo” you have no doubt.
QTP sometimes gives insignificant names to objects i.e. “button_1”
or “button_2”.
It is better to change these, to more descriptive names.
Changing logical names does not effect the QTP object recognition
mechanism.

Dani Vainstein & Monika Arora Gautam

18

Naming conventions

See the logical names
Convention changes

Dani Vainstein & Monika Arora Gautam

19

CheckDialog Reusable Action






We will learn how to check different dialog
messages that share same dialog title “Flight
Reservation”.
We will create a new reusable action inside the
guiLogin module, and we will call it
“CheckDialog”.
I will explain later, the considerations of this
decision.

Dani Vainstein & Monika Arora Gautam

20

Creating a new reusable action




From Menu : Insert  Call to New Action
Type : Hold the ALT key, and type ( I + N )
From toolbar as shown below:

Call to New Action

Dani Vainstein & Monika Arora Gautam

21

Adding a new reusable action
Name : CheckDialog

Description :
Manage all dialog checkpoints
under guiLogin

Reusable Action

Location : At the end of the test

Dani Vainstein & Monika Arora Gautam

22

CheckDialog Created




Now you should have two reusable actions.
Notice the actions listbox ( left ) and the
keyword view ( right ).

Dani Vainstein & Monika Arora Gautam

23

Mapping Dialogs



Move to Expert View Action CheckDialogs.
Open the local repository : Resources  Object
Repository
Or Type CTRL+R



Or from toolbar as shown below:




Object Repository

Dani Vainstein & Monika Arora Gautam

24

Mapping Dialogs






Open the Flight Reservation application if is not opened, and click
OK.
CAUTION : always be aware, specially when adding objects, that
you have only one instance of the AUT open.
What would happen? These child objects would be added under a
new “Dialog_2” parent object and would not be recognized during
playback.

Dani Vainstein & Monika Arora Gautam

25

Map Flight Reservations dialogs


Click OK to get Flight Reservations dialog.

Dani Vainstein & Monika Arora Gautam

26

Naming Conventions





Remove space between “Flight Reservation” and change it
to “FlightReservation".
Change the “static” to “Icon”.
Change “Please enter agent name” to “Msg”.

Dani Vainstein & Monika Arora Gautam

27

Mapping other dialogs?
Return to the same process and add all the objects/
dialog w.r.t. Logging in to Flight Application.
Try to map the following dialogs :







Why these are not added to the repository?

Dani Vainstein & Monika Arora Gautam

28

Mapping dialogs









That’s because all the messages has the same title “Flight
Reservations”.
For QTP all these dialogs are same.
Is it good? Of course! Otherwise you will have to map
every single message in your AUT.
But, what about the message displayed in the dialog?
The text is not the same.
This you will learn through the Object Identification
feature and the Object Spy in next upcoming slides.

Dani Vainstein & Monika Arora Gautam

29

Understanding object identification



Select the object Spy. From menu : Tools  Object Spy
Or from toolbar as shown below.

Object Spy

Dani Vainstein & Monika Arora Gautam

30

Object Spy




Dani Vainstein & Monika Arora Gautam

Click on the finger point and select the
message in the dialog.

Save a screenshot of the spy in “My
Pictures” and do same for this dialog
and compare properties for both the
messages.

31

Object Spy - Msg

Dani Vainstein & Monika Arora Gautam

32

Comparing



The properties are quite different. The key of the
mystery is the property window id, they are the
same = 65535.

Dani Vainstein & Monika Arora Gautam

33

Understanding The Object Identification


Another look to the repository will show us that the
object is identified by QTP using the native class and
window id, those properties have the same values

 You will see further,

why, this is a very big
advantage.

Dani Vainstein & Monika Arora Gautam

34

Highlight the Dialogs Messages in the
Application




Select the Msg object in the repository and Click the
“highlight in application” button while one of the popups is displayed, see what happens.
One by one do the same for other pop-ups, and see what
happens.

Highlight in application

Dani Vainstein & Monika Arora Gautam

35

Conclusion






Logically, QTP identifies all the messages inside
the same dialog as the only one message.
Imagine you have to map all the different
messages for same instance of dialog in your
AUT. It’s lot of job.
However QTP takes care of it by its Object
Identification and Spy feature.

Dani Vainstein & Monika Arora Gautam

36

Saving the Test



Save The Test.
Every Time you see * near the test name, it means that
the test is not saved. Always remember to save your
work.
Not Saved

Dani Vainstein & Monika Arora Gautam

37

Summary






We have created a new reusable action
guiLogin/guiLogin module
We a created a second new reusable action
guiLogin/CheckDialog
In this session we’ve learned how to map the Login
window and messages dialogs.

Dani Vainstein & Monika Arora Gautam

38

Special Thanks To


Bharathi Babu, India, Pune.



Ayyappa Koppolu, India, Pune.



Paul Grossman, USA, Chicago.



Sumit Singhal, India, Bangalore.



Sanjeev Mathur, India, Noida.



Manasa VN, India, Bangalore.



Prakash Kumar, India, Pune.



Richi Sharma, USA, New Jersey.



Janardhan Kalvakuntla, USA, New England.



Indlamudi Rajesh, India, Mumbai.

 Vainstein
Joydeep
Das,Arora
India,
Hyderabad.
Dani
& Monika
Gautam

39

Make sure to visit us for:






Tutorials
Articles
Projects
And much more

@
www.AdvancedQTP.com

Dani Vainstein & Monika Arora Gautam

40


Slide 33

Login Module

Building the Login GUI Layer Module

1

Topics covered







Create a new test, and classify it as a reusable
action under GUI Layer.
Adding Object to Local Object Repository.
Mapping Dialogs/ Objects.
Smart Identification.
Modify and save Test Settings.

Dani Vainstein & Monika Arora Gautam

2

Before you start…


Before starting the presentation, read about the
following topics in QTP help.






Reusable-Actions
Smart identification.
Action Parameters.
Object Spy.





Test Object Properties.
Run-time Object Properties.

Object Repository.

Dani Vainstein & Monika Arora Gautam

3

Things to Remember…




The Application Under Test (AUT) uses embedded
ActiveX objects, so when you first time open QTP, make
sure to check ActiveX option from Add-in manager.
When QTP is launched, be sure only the ActiveX option
is checked in the add-in manager.

Dani Vainstein & Monika Arora Gautam

4

guiLogin Module
Automation


FR
LIB
RA

Save the current test under
name = “guiLogin” in folder
FR\RA\GL

BL
GL

RS
DOC
DAT
SETTING

guiLogin

TESTS
RES
BATCH
ENV
Dani Vainstein & Monika Arora Gautam

5

guiLogin - Introduction








We are going to create a new Test and
reusable action.
The Test name would be guiLogin, because it
handles the “Login” dialog.
The main action will also called guiLogin. It
will be a reusable action, for further tests.
The guiLogin will receive an input parameter
of string type.

Dani Vainstein & Monika Arora Gautam

6

Modifying the Test Settings - Properties Tab

Description :
The guiLogin Module Stores all the actions required for the login process
Remark : associated add-ins : ActiveX only

Dani Vainstein & Monika Arora Gautam

7

Run Tab
Run one iteration only

Save The Test
Pop up
Message box
Disable Smart Identification
During the run session

Dani Vainstein & Monika Arora Gautam

8

Reusable action






We will create Reusable Action named guiLogin and set
the Action properties.
The guiLogin module ( reusable action ) implements all
the available actions on the Dialog login screen.
The Parameter StepName will be used as an instruction
to the reusable action i.e. “SetData”, “CheckLogo” etc.

Dani Vainstein & Monika Arora Gautam

9

guiLogin Reusable-Action


From Menu  Edit  Action  Action
Properties

Dani Vainstein & Monika Arora Gautam

10

guiLogin - General Tab
Change
Action
Name

Add
Description
Mark
Reusable

Dani Vainstein & Monika Arora Gautam

11

Parameters Tab – Add StepName


Add a new Input Parameter ( Click on + )
Add
StepName
Input
Parameter

Type
String

Dani Vainstein & Monika Arora Gautam

Add
Description

Default
Leave Empty

12

Mapping The Dialog Login







The guiLogin will hold a local repository.
The advantage of the OOT (Object Oriented Testing )
methodology, I think ( and others may disagree with me
) is that by having a reusable action per-screen, you
don’t have to maintain a shared object repository.
Especially when you work within a team, it helps
sparing the locks on the shared working files.
Mapping the application objects – is very important, you
should map your application before you start to “script”

Dani Vainstein & Monika Arora Gautam

13

Adding Objects to Local Repository




Open the Flight Application from Start  All Programs
 QuickTest Professional  Sample Applications 
Flight.
Do not login, just leave the window open.

Dani Vainstein & Monika Arora Gautam

14

Adding Objects to Local Repository





Open the local object repository from
menu  Resources  Object Repository.
Or just type Ctrl+R in QTP application.
QTP will show an hand icon.

Click Add objects in toolbar
Or
Object  Add objects To Local…

Dani Vainstein & Monika Arora Gautam

15

Mapping objects
Point the title-bar of dialog

Click OK
All Objects types

Click OK

Dani Vainstein & Monika Arora Gautam

16

Naming conventions



All the objects will be added to the local repository.
Remove spaces and non-alphanumeric characters from
Object Names.




Change “Agent Name:” to “AgentName”.
Change “Static” to “Logo”.
Remove all names with : (colon ) at the end of the name.

Dani Vainstein & Monika Arora Gautam

17

Why Renaming?











Sometimes there are two blanks instead of one; between two words.
According to my experience, nobody will make a new version for
such a mistake. Their answer ( R&D ) would be
“We will fix it later”.
For QTP this is critical, as it will not identify two spaces instead of
one.
The name “Static” says nothing to you and/or your colleagues, but
with “logo” you have no doubt.
QTP sometimes gives insignificant names to objects i.e. “button_1”
or “button_2”.
It is better to change these, to more descriptive names.
Changing logical names does not effect the QTP object recognition
mechanism.

Dani Vainstein & Monika Arora Gautam

18

Naming conventions

See the logical names
Convention changes

Dani Vainstein & Monika Arora Gautam

19

CheckDialog Reusable Action






We will learn how to check different dialog
messages that share same dialog title “Flight
Reservation”.
We will create a new reusable action inside the
guiLogin module, and we will call it
“CheckDialog”.
I will explain later, the considerations of this
decision.

Dani Vainstein & Monika Arora Gautam

20

Creating a new reusable action




From Menu : Insert  Call to New Action
Type : Hold the ALT key, and type ( I + N )
From toolbar as shown below:

Call to New Action

Dani Vainstein & Monika Arora Gautam

21

Adding a new reusable action
Name : CheckDialog

Description :
Manage all dialog checkpoints
under guiLogin

Reusable Action

Location : At the end of the test

Dani Vainstein & Monika Arora Gautam

22

CheckDialog Created




Now you should have two reusable actions.
Notice the actions listbox ( left ) and the
keyword view ( right ).

Dani Vainstein & Monika Arora Gautam

23

Mapping Dialogs



Move to Expert View Action CheckDialogs.
Open the local repository : Resources  Object
Repository
Or Type CTRL+R



Or from toolbar as shown below:




Object Repository

Dani Vainstein & Monika Arora Gautam

24

Mapping Dialogs






Open the Flight Reservation application if is not opened, and click
OK.
CAUTION : always be aware, specially when adding objects, that
you have only one instance of the AUT open.
What would happen? These child objects would be added under a
new “Dialog_2” parent object and would not be recognized during
playback.

Dani Vainstein & Monika Arora Gautam

25

Map Flight Reservations dialogs


Click OK to get Flight Reservations dialog.

Dani Vainstein & Monika Arora Gautam

26

Naming Conventions





Remove space between “Flight Reservation” and change it
to “FlightReservation".
Change the “static” to “Icon”.
Change “Please enter agent name” to “Msg”.

Dani Vainstein & Monika Arora Gautam

27

Mapping other dialogs?
Return to the same process and add all the objects/
dialog w.r.t. Logging in to Flight Application.
Try to map the following dialogs :







Why these are not added to the repository?

Dani Vainstein & Monika Arora Gautam

28

Mapping dialogs









That’s because all the messages has the same title “Flight
Reservations”.
For QTP all these dialogs are same.
Is it good? Of course! Otherwise you will have to map
every single message in your AUT.
But, what about the message displayed in the dialog?
The text is not the same.
This you will learn through the Object Identification
feature and the Object Spy in next upcoming slides.

Dani Vainstein & Monika Arora Gautam

29

Understanding object identification



Select the object Spy. From menu : Tools  Object Spy
Or from toolbar as shown below.

Object Spy

Dani Vainstein & Monika Arora Gautam

30

Object Spy




Dani Vainstein & Monika Arora Gautam

Click on the finger point and select the
message in the dialog.

Save a screenshot of the spy in “My
Pictures” and do same for this dialog
and compare properties for both the
messages.

31

Object Spy - Msg

Dani Vainstein & Monika Arora Gautam

32

Comparing



The properties are quite different. The key of the
mystery is the property window id, they are the
same = 65535.

Dani Vainstein & Monika Arora Gautam

33

Understanding The Object Identification


Another look to the repository will show us that the
object is identified by QTP using the native class and
window id, those properties have the same values

 You will see further,

why, this is a very big
advantage.

Dani Vainstein & Monika Arora Gautam

34

Highlight the Dialogs Messages in the
Application




Select the Msg object in the repository and Click the
“highlight in application” button while one of the popups is displayed, see what happens.
One by one do the same for other pop-ups, and see what
happens.

Highlight in application

Dani Vainstein & Monika Arora Gautam

35

Conclusion






Logically, QTP identifies all the messages inside
the same dialog as the only one message.
Imagine you have to map all the different
messages for same instance of dialog in your
AUT. It’s lot of job.
However QTP takes care of it by its Object
Identification and Spy feature.

Dani Vainstein & Monika Arora Gautam

36

Saving the Test



Save The Test.
Every Time you see * near the test name, it means that
the test is not saved. Always remember to save your
work.
Not Saved

Dani Vainstein & Monika Arora Gautam

37

Summary






We have created a new reusable action
guiLogin/guiLogin module
We a created a second new reusable action
guiLogin/CheckDialog
In this session we’ve learned how to map the Login
window and messages dialogs.

Dani Vainstein & Monika Arora Gautam

38

Special Thanks To


Bharathi Babu, India, Pune.



Ayyappa Koppolu, India, Pune.



Paul Grossman, USA, Chicago.



Sumit Singhal, India, Bangalore.



Sanjeev Mathur, India, Noida.



Manasa VN, India, Bangalore.



Prakash Kumar, India, Pune.



Richi Sharma, USA, New Jersey.



Janardhan Kalvakuntla, USA, New England.



Indlamudi Rajesh, India, Mumbai.

 Vainstein
Joydeep
Das,Arora
India,
Hyderabad.
Dani
& Monika
Gautam

39

Make sure to visit us for:






Tutorials
Articles
Projects
And much more

@
www.AdvancedQTP.com

Dani Vainstein & Monika Arora Gautam

40


Slide 34

Login Module

Building the Login GUI Layer Module

1

Topics covered







Create a new test, and classify it as a reusable
action under GUI Layer.
Adding Object to Local Object Repository.
Mapping Dialogs/ Objects.
Smart Identification.
Modify and save Test Settings.

Dani Vainstein & Monika Arora Gautam

2

Before you start…


Before starting the presentation, read about the
following topics in QTP help.






Reusable-Actions
Smart identification.
Action Parameters.
Object Spy.





Test Object Properties.
Run-time Object Properties.

Object Repository.

Dani Vainstein & Monika Arora Gautam

3

Things to Remember…




The Application Under Test (AUT) uses embedded
ActiveX objects, so when you first time open QTP, make
sure to check ActiveX option from Add-in manager.
When QTP is launched, be sure only the ActiveX option
is checked in the add-in manager.

Dani Vainstein & Monika Arora Gautam

4

guiLogin Module
Automation


FR
LIB
RA

Save the current test under
name = “guiLogin” in folder
FR\RA\GL

BL
GL

RS
DOC
DAT
SETTING

guiLogin

TESTS
RES
BATCH
ENV
Dani Vainstein & Monika Arora Gautam

5

guiLogin - Introduction








We are going to create a new Test and
reusable action.
The Test name would be guiLogin, because it
handles the “Login” dialog.
The main action will also called guiLogin. It
will be a reusable action, for further tests.
The guiLogin will receive an input parameter
of string type.

Dani Vainstein & Monika Arora Gautam

6

Modifying the Test Settings - Properties Tab

Description :
The guiLogin Module Stores all the actions required for the login process
Remark : associated add-ins : ActiveX only

Dani Vainstein & Monika Arora Gautam

7

Run Tab
Run one iteration only

Save The Test
Pop up
Message box
Disable Smart Identification
During the run session

Dani Vainstein & Monika Arora Gautam

8

Reusable action






We will create Reusable Action named guiLogin and set
the Action properties.
The guiLogin module ( reusable action ) implements all
the available actions on the Dialog login screen.
The Parameter StepName will be used as an instruction
to the reusable action i.e. “SetData”, “CheckLogo” etc.

Dani Vainstein & Monika Arora Gautam

9

guiLogin Reusable-Action


From Menu  Edit  Action  Action
Properties

Dani Vainstein & Monika Arora Gautam

10

guiLogin - General Tab
Change
Action
Name

Add
Description
Mark
Reusable

Dani Vainstein & Monika Arora Gautam

11

Parameters Tab – Add StepName


Add a new Input Parameter ( Click on + )
Add
StepName
Input
Parameter

Type
String

Dani Vainstein & Monika Arora Gautam

Add
Description

Default
Leave Empty

12

Mapping The Dialog Login







The guiLogin will hold a local repository.
The advantage of the OOT (Object Oriented Testing )
methodology, I think ( and others may disagree with me
) is that by having a reusable action per-screen, you
don’t have to maintain a shared object repository.
Especially when you work within a team, it helps
sparing the locks on the shared working files.
Mapping the application objects – is very important, you
should map your application before you start to “script”

Dani Vainstein & Monika Arora Gautam

13

Adding Objects to Local Repository




Open the Flight Application from Start  All Programs
 QuickTest Professional  Sample Applications 
Flight.
Do not login, just leave the window open.

Dani Vainstein & Monika Arora Gautam

14

Adding Objects to Local Repository





Open the local object repository from
menu  Resources  Object Repository.
Or just type Ctrl+R in QTP application.
QTP will show an hand icon.

Click Add objects in toolbar
Or
Object  Add objects To Local…

Dani Vainstein & Monika Arora Gautam

15

Mapping objects
Point the title-bar of dialog

Click OK
All Objects types

Click OK

Dani Vainstein & Monika Arora Gautam

16

Naming conventions



All the objects will be added to the local repository.
Remove spaces and non-alphanumeric characters from
Object Names.




Change “Agent Name:” to “AgentName”.
Change “Static” to “Logo”.
Remove all names with : (colon ) at the end of the name.

Dani Vainstein & Monika Arora Gautam

17

Why Renaming?











Sometimes there are two blanks instead of one; between two words.
According to my experience, nobody will make a new version for
such a mistake. Their answer ( R&D ) would be
“We will fix it later”.
For QTP this is critical, as it will not identify two spaces instead of
one.
The name “Static” says nothing to you and/or your colleagues, but
with “logo” you have no doubt.
QTP sometimes gives insignificant names to objects i.e. “button_1”
or “button_2”.
It is better to change these, to more descriptive names.
Changing logical names does not effect the QTP object recognition
mechanism.

Dani Vainstein & Monika Arora Gautam

18

Naming conventions

See the logical names
Convention changes

Dani Vainstein & Monika Arora Gautam

19

CheckDialog Reusable Action






We will learn how to check different dialog
messages that share same dialog title “Flight
Reservation”.
We will create a new reusable action inside the
guiLogin module, and we will call it
“CheckDialog”.
I will explain later, the considerations of this
decision.

Dani Vainstein & Monika Arora Gautam

20

Creating a new reusable action




From Menu : Insert  Call to New Action
Type : Hold the ALT key, and type ( I + N )
From toolbar as shown below:

Call to New Action

Dani Vainstein & Monika Arora Gautam

21

Adding a new reusable action
Name : CheckDialog

Description :
Manage all dialog checkpoints
under guiLogin

Reusable Action

Location : At the end of the test

Dani Vainstein & Monika Arora Gautam

22

CheckDialog Created




Now you should have two reusable actions.
Notice the actions listbox ( left ) and the
keyword view ( right ).

Dani Vainstein & Monika Arora Gautam

23

Mapping Dialogs



Move to Expert View Action CheckDialogs.
Open the local repository : Resources  Object
Repository
Or Type CTRL+R



Or from toolbar as shown below:




Object Repository

Dani Vainstein & Monika Arora Gautam

24

Mapping Dialogs






Open the Flight Reservation application if is not opened, and click
OK.
CAUTION : always be aware, specially when adding objects, that
you have only one instance of the AUT open.
What would happen? These child objects would be added under a
new “Dialog_2” parent object and would not be recognized during
playback.

Dani Vainstein & Monika Arora Gautam

25

Map Flight Reservations dialogs


Click OK to get Flight Reservations dialog.

Dani Vainstein & Monika Arora Gautam

26

Naming Conventions





Remove space between “Flight Reservation” and change it
to “FlightReservation".
Change the “static” to “Icon”.
Change “Please enter agent name” to “Msg”.

Dani Vainstein & Monika Arora Gautam

27

Mapping other dialogs?
Return to the same process and add all the objects/
dialog w.r.t. Logging in to Flight Application.
Try to map the following dialogs :







Why these are not added to the repository?

Dani Vainstein & Monika Arora Gautam

28

Mapping dialogs









That’s because all the messages has the same title “Flight
Reservations”.
For QTP all these dialogs are same.
Is it good? Of course! Otherwise you will have to map
every single message in your AUT.
But, what about the message displayed in the dialog?
The text is not the same.
This you will learn through the Object Identification
feature and the Object Spy in next upcoming slides.

Dani Vainstein & Monika Arora Gautam

29

Understanding object identification



Select the object Spy. From menu : Tools  Object Spy
Or from toolbar as shown below.

Object Spy

Dani Vainstein & Monika Arora Gautam

30

Object Spy




Dani Vainstein & Monika Arora Gautam

Click on the finger point and select the
message in the dialog.

Save a screenshot of the spy in “My
Pictures” and do same for this dialog
and compare properties for both the
messages.

31

Object Spy - Msg

Dani Vainstein & Monika Arora Gautam

32

Comparing



The properties are quite different. The key of the
mystery is the property window id, they are the
same = 65535.

Dani Vainstein & Monika Arora Gautam

33

Understanding The Object Identification


Another look to the repository will show us that the
object is identified by QTP using the native class and
window id, those properties have the same values

 You will see further,

why, this is a very big
advantage.

Dani Vainstein & Monika Arora Gautam

34

Highlight the Dialogs Messages in the
Application




Select the Msg object in the repository and Click the
“highlight in application” button while one of the popups is displayed, see what happens.
One by one do the same for other pop-ups, and see what
happens.

Highlight in application

Dani Vainstein & Monika Arora Gautam

35

Conclusion






Logically, QTP identifies all the messages inside
the same dialog as the only one message.
Imagine you have to map all the different
messages for same instance of dialog in your
AUT. It’s lot of job.
However QTP takes care of it by its Object
Identification and Spy feature.

Dani Vainstein & Monika Arora Gautam

36

Saving the Test



Save The Test.
Every Time you see * near the test name, it means that
the test is not saved. Always remember to save your
work.
Not Saved

Dani Vainstein & Monika Arora Gautam

37

Summary






We have created a new reusable action
guiLogin/guiLogin module
We a created a second new reusable action
guiLogin/CheckDialog
In this session we’ve learned how to map the Login
window and messages dialogs.

Dani Vainstein & Monika Arora Gautam

38

Special Thanks To


Bharathi Babu, India, Pune.



Ayyappa Koppolu, India, Pune.



Paul Grossman, USA, Chicago.



Sumit Singhal, India, Bangalore.



Sanjeev Mathur, India, Noida.



Manasa VN, India, Bangalore.



Prakash Kumar, India, Pune.



Richi Sharma, USA, New Jersey.



Janardhan Kalvakuntla, USA, New England.



Indlamudi Rajesh, India, Mumbai.

 Vainstein
Joydeep
Das,Arora
India,
Hyderabad.
Dani
& Monika
Gautam

39

Make sure to visit us for:






Tutorials
Articles
Projects
And much more

@
www.AdvancedQTP.com

Dani Vainstein & Monika Arora Gautam

40


Slide 35

Login Module

Building the Login GUI Layer Module

1

Topics covered







Create a new test, and classify it as a reusable
action under GUI Layer.
Adding Object to Local Object Repository.
Mapping Dialogs/ Objects.
Smart Identification.
Modify and save Test Settings.

Dani Vainstein & Monika Arora Gautam

2

Before you start…


Before starting the presentation, read about the
following topics in QTP help.






Reusable-Actions
Smart identification.
Action Parameters.
Object Spy.





Test Object Properties.
Run-time Object Properties.

Object Repository.

Dani Vainstein & Monika Arora Gautam

3

Things to Remember…




The Application Under Test (AUT) uses embedded
ActiveX objects, so when you first time open QTP, make
sure to check ActiveX option from Add-in manager.
When QTP is launched, be sure only the ActiveX option
is checked in the add-in manager.

Dani Vainstein & Monika Arora Gautam

4

guiLogin Module
Automation


FR
LIB
RA

Save the current test under
name = “guiLogin” in folder
FR\RA\GL

BL
GL

RS
DOC
DAT
SETTING

guiLogin

TESTS
RES
BATCH
ENV
Dani Vainstein & Monika Arora Gautam

5

guiLogin - Introduction








We are going to create a new Test and
reusable action.
The Test name would be guiLogin, because it
handles the “Login” dialog.
The main action will also called guiLogin. It
will be a reusable action, for further tests.
The guiLogin will receive an input parameter
of string type.

Dani Vainstein & Monika Arora Gautam

6

Modifying the Test Settings - Properties Tab

Description :
The guiLogin Module Stores all the actions required for the login process
Remark : associated add-ins : ActiveX only

Dani Vainstein & Monika Arora Gautam

7

Run Tab
Run one iteration only

Save The Test
Pop up
Message box
Disable Smart Identification
During the run session

Dani Vainstein & Monika Arora Gautam

8

Reusable action






We will create Reusable Action named guiLogin and set
the Action properties.
The guiLogin module ( reusable action ) implements all
the available actions on the Dialog login screen.
The Parameter StepName will be used as an instruction
to the reusable action i.e. “SetData”, “CheckLogo” etc.

Dani Vainstein & Monika Arora Gautam

9

guiLogin Reusable-Action


From Menu  Edit  Action  Action
Properties

Dani Vainstein & Monika Arora Gautam

10

guiLogin - General Tab
Change
Action
Name

Add
Description
Mark
Reusable

Dani Vainstein & Monika Arora Gautam

11

Parameters Tab – Add StepName


Add a new Input Parameter ( Click on + )
Add
StepName
Input
Parameter

Type
String

Dani Vainstein & Monika Arora Gautam

Add
Description

Default
Leave Empty

12

Mapping The Dialog Login







The guiLogin will hold a local repository.
The advantage of the OOT (Object Oriented Testing )
methodology, I think ( and others may disagree with me
) is that by having a reusable action per-screen, you
don’t have to maintain a shared object repository.
Especially when you work within a team, it helps
sparing the locks on the shared working files.
Mapping the application objects – is very important, you
should map your application before you start to “script”

Dani Vainstein & Monika Arora Gautam

13

Adding Objects to Local Repository




Open the Flight Application from Start  All Programs
 QuickTest Professional  Sample Applications 
Flight.
Do not login, just leave the window open.

Dani Vainstein & Monika Arora Gautam

14

Adding Objects to Local Repository





Open the local object repository from
menu  Resources  Object Repository.
Or just type Ctrl+R in QTP application.
QTP will show an hand icon.

Click Add objects in toolbar
Or
Object  Add objects To Local…

Dani Vainstein & Monika Arora Gautam

15

Mapping objects
Point the title-bar of dialog

Click OK
All Objects types

Click OK

Dani Vainstein & Monika Arora Gautam

16

Naming conventions



All the objects will be added to the local repository.
Remove spaces and non-alphanumeric characters from
Object Names.




Change “Agent Name:” to “AgentName”.
Change “Static” to “Logo”.
Remove all names with : (colon ) at the end of the name.

Dani Vainstein & Monika Arora Gautam

17

Why Renaming?











Sometimes there are two blanks instead of one; between two words.
According to my experience, nobody will make a new version for
such a mistake. Their answer ( R&D ) would be
“We will fix it later”.
For QTP this is critical, as it will not identify two spaces instead of
one.
The name “Static” says nothing to you and/or your colleagues, but
with “logo” you have no doubt.
QTP sometimes gives insignificant names to objects i.e. “button_1”
or “button_2”.
It is better to change these, to more descriptive names.
Changing logical names does not effect the QTP object recognition
mechanism.

Dani Vainstein & Monika Arora Gautam

18

Naming conventions

See the logical names
Convention changes

Dani Vainstein & Monika Arora Gautam

19

CheckDialog Reusable Action






We will learn how to check different dialog
messages that share same dialog title “Flight
Reservation”.
We will create a new reusable action inside the
guiLogin module, and we will call it
“CheckDialog”.
I will explain later, the considerations of this
decision.

Dani Vainstein & Monika Arora Gautam

20

Creating a new reusable action




From Menu : Insert  Call to New Action
Type : Hold the ALT key, and type ( I + N )
From toolbar as shown below:

Call to New Action

Dani Vainstein & Monika Arora Gautam

21

Adding a new reusable action
Name : CheckDialog

Description :
Manage all dialog checkpoints
under guiLogin

Reusable Action

Location : At the end of the test

Dani Vainstein & Monika Arora Gautam

22

CheckDialog Created




Now you should have two reusable actions.
Notice the actions listbox ( left ) and the
keyword view ( right ).

Dani Vainstein & Monika Arora Gautam

23

Mapping Dialogs



Move to Expert View Action CheckDialogs.
Open the local repository : Resources  Object
Repository
Or Type CTRL+R



Or from toolbar as shown below:




Object Repository

Dani Vainstein & Monika Arora Gautam

24

Mapping Dialogs






Open the Flight Reservation application if is not opened, and click
OK.
CAUTION : always be aware, specially when adding objects, that
you have only one instance of the AUT open.
What would happen? These child objects would be added under a
new “Dialog_2” parent object and would not be recognized during
playback.

Dani Vainstein & Monika Arora Gautam

25

Map Flight Reservations dialogs


Click OK to get Flight Reservations dialog.

Dani Vainstein & Monika Arora Gautam

26

Naming Conventions





Remove space between “Flight Reservation” and change it
to “FlightReservation".
Change the “static” to “Icon”.
Change “Please enter agent name” to “Msg”.

Dani Vainstein & Monika Arora Gautam

27

Mapping other dialogs?
Return to the same process and add all the objects/
dialog w.r.t. Logging in to Flight Application.
Try to map the following dialogs :







Why these are not added to the repository?

Dani Vainstein & Monika Arora Gautam

28

Mapping dialogs









That’s because all the messages has the same title “Flight
Reservations”.
For QTP all these dialogs are same.
Is it good? Of course! Otherwise you will have to map
every single message in your AUT.
But, what about the message displayed in the dialog?
The text is not the same.
This you will learn through the Object Identification
feature and the Object Spy in next upcoming slides.

Dani Vainstein & Monika Arora Gautam

29

Understanding object identification



Select the object Spy. From menu : Tools  Object Spy
Or from toolbar as shown below.

Object Spy

Dani Vainstein & Monika Arora Gautam

30

Object Spy




Dani Vainstein & Monika Arora Gautam

Click on the finger point and select the
message in the dialog.

Save a screenshot of the spy in “My
Pictures” and do same for this dialog
and compare properties for both the
messages.

31

Object Spy - Msg

Dani Vainstein & Monika Arora Gautam

32

Comparing



The properties are quite different. The key of the
mystery is the property window id, they are the
same = 65535.

Dani Vainstein & Monika Arora Gautam

33

Understanding The Object Identification


Another look to the repository will show us that the
object is identified by QTP using the native class and
window id, those properties have the same values

 You will see further,

why, this is a very big
advantage.

Dani Vainstein & Monika Arora Gautam

34

Highlight the Dialogs Messages in the
Application




Select the Msg object in the repository and Click the
“highlight in application” button while one of the popups is displayed, see what happens.
One by one do the same for other pop-ups, and see what
happens.

Highlight in application

Dani Vainstein & Monika Arora Gautam

35

Conclusion






Logically, QTP identifies all the messages inside
the same dialog as the only one message.
Imagine you have to map all the different
messages for same instance of dialog in your
AUT. It’s lot of job.
However QTP takes care of it by its Object
Identification and Spy feature.

Dani Vainstein & Monika Arora Gautam

36

Saving the Test



Save The Test.
Every Time you see * near the test name, it means that
the test is not saved. Always remember to save your
work.
Not Saved

Dani Vainstein & Monika Arora Gautam

37

Summary






We have created a new reusable action
guiLogin/guiLogin module
We a created a second new reusable action
guiLogin/CheckDialog
In this session we’ve learned how to map the Login
window and messages dialogs.

Dani Vainstein & Monika Arora Gautam

38

Special Thanks To


Bharathi Babu, India, Pune.



Ayyappa Koppolu, India, Pune.



Paul Grossman, USA, Chicago.



Sumit Singhal, India, Bangalore.



Sanjeev Mathur, India, Noida.



Manasa VN, India, Bangalore.



Prakash Kumar, India, Pune.



Richi Sharma, USA, New Jersey.



Janardhan Kalvakuntla, USA, New England.



Indlamudi Rajesh, India, Mumbai.

 Vainstein
Joydeep
Das,Arora
India,
Hyderabad.
Dani
& Monika
Gautam

39

Make sure to visit us for:






Tutorials
Articles
Projects
And much more

@
www.AdvancedQTP.com

Dani Vainstein & Monika Arora Gautam

40


Slide 36

Login Module

Building the Login GUI Layer Module

1

Topics covered







Create a new test, and classify it as a reusable
action under GUI Layer.
Adding Object to Local Object Repository.
Mapping Dialogs/ Objects.
Smart Identification.
Modify and save Test Settings.

Dani Vainstein & Monika Arora Gautam

2

Before you start…


Before starting the presentation, read about the
following topics in QTP help.






Reusable-Actions
Smart identification.
Action Parameters.
Object Spy.





Test Object Properties.
Run-time Object Properties.

Object Repository.

Dani Vainstein & Monika Arora Gautam

3

Things to Remember…




The Application Under Test (AUT) uses embedded
ActiveX objects, so when you first time open QTP, make
sure to check ActiveX option from Add-in manager.
When QTP is launched, be sure only the ActiveX option
is checked in the add-in manager.

Dani Vainstein & Monika Arora Gautam

4

guiLogin Module
Automation


FR
LIB
RA

Save the current test under
name = “guiLogin” in folder
FR\RA\GL

BL
GL

RS
DOC
DAT
SETTING

guiLogin

TESTS
RES
BATCH
ENV
Dani Vainstein & Monika Arora Gautam

5

guiLogin - Introduction








We are going to create a new Test and
reusable action.
The Test name would be guiLogin, because it
handles the “Login” dialog.
The main action will also called guiLogin. It
will be a reusable action, for further tests.
The guiLogin will receive an input parameter
of string type.

Dani Vainstein & Monika Arora Gautam

6

Modifying the Test Settings - Properties Tab

Description :
The guiLogin Module Stores all the actions required for the login process
Remark : associated add-ins : ActiveX only

Dani Vainstein & Monika Arora Gautam

7

Run Tab
Run one iteration only

Save The Test
Pop up
Message box
Disable Smart Identification
During the run session

Dani Vainstein & Monika Arora Gautam

8

Reusable action






We will create Reusable Action named guiLogin and set
the Action properties.
The guiLogin module ( reusable action ) implements all
the available actions on the Dialog login screen.
The Parameter StepName will be used as an instruction
to the reusable action i.e. “SetData”, “CheckLogo” etc.

Dani Vainstein & Monika Arora Gautam

9

guiLogin Reusable-Action


From Menu  Edit  Action  Action
Properties

Dani Vainstein & Monika Arora Gautam

10

guiLogin - General Tab
Change
Action
Name

Add
Description
Mark
Reusable

Dani Vainstein & Monika Arora Gautam

11

Parameters Tab – Add StepName


Add a new Input Parameter ( Click on + )
Add
StepName
Input
Parameter

Type
String

Dani Vainstein & Monika Arora Gautam

Add
Description

Default
Leave Empty

12

Mapping The Dialog Login







The guiLogin will hold a local repository.
The advantage of the OOT (Object Oriented Testing )
methodology, I think ( and others may disagree with me
) is that by having a reusable action per-screen, you
don’t have to maintain a shared object repository.
Especially when you work within a team, it helps
sparing the locks on the shared working files.
Mapping the application objects – is very important, you
should map your application before you start to “script”

Dani Vainstein & Monika Arora Gautam

13

Adding Objects to Local Repository




Open the Flight Application from Start  All Programs
 QuickTest Professional  Sample Applications 
Flight.
Do not login, just leave the window open.

Dani Vainstein & Monika Arora Gautam

14

Adding Objects to Local Repository





Open the local object repository from
menu  Resources  Object Repository.
Or just type Ctrl+R in QTP application.
QTP will show an hand icon.

Click Add objects in toolbar
Or
Object  Add objects To Local…

Dani Vainstein & Monika Arora Gautam

15

Mapping objects
Point the title-bar of dialog

Click OK
All Objects types

Click OK

Dani Vainstein & Monika Arora Gautam

16

Naming conventions



All the objects will be added to the local repository.
Remove spaces and non-alphanumeric characters from
Object Names.




Change “Agent Name:” to “AgentName”.
Change “Static” to “Logo”.
Remove all names with : (colon ) at the end of the name.

Dani Vainstein & Monika Arora Gautam

17

Why Renaming?











Sometimes there are two blanks instead of one; between two words.
According to my experience, nobody will make a new version for
such a mistake. Their answer ( R&D ) would be
“We will fix it later”.
For QTP this is critical, as it will not identify two spaces instead of
one.
The name “Static” says nothing to you and/or your colleagues, but
with “logo” you have no doubt.
QTP sometimes gives insignificant names to objects i.e. “button_1”
or “button_2”.
It is better to change these, to more descriptive names.
Changing logical names does not effect the QTP object recognition
mechanism.

Dani Vainstein & Monika Arora Gautam

18

Naming conventions

See the logical names
Convention changes

Dani Vainstein & Monika Arora Gautam

19

CheckDialog Reusable Action






We will learn how to check different dialog
messages that share same dialog title “Flight
Reservation”.
We will create a new reusable action inside the
guiLogin module, and we will call it
“CheckDialog”.
I will explain later, the considerations of this
decision.

Dani Vainstein & Monika Arora Gautam

20

Creating a new reusable action




From Menu : Insert  Call to New Action
Type : Hold the ALT key, and type ( I + N )
From toolbar as shown below:

Call to New Action

Dani Vainstein & Monika Arora Gautam

21

Adding a new reusable action
Name : CheckDialog

Description :
Manage all dialog checkpoints
under guiLogin

Reusable Action

Location : At the end of the test

Dani Vainstein & Monika Arora Gautam

22

CheckDialog Created




Now you should have two reusable actions.
Notice the actions listbox ( left ) and the
keyword view ( right ).

Dani Vainstein & Monika Arora Gautam

23

Mapping Dialogs



Move to Expert View Action CheckDialogs.
Open the local repository : Resources  Object
Repository
Or Type CTRL+R



Or from toolbar as shown below:




Object Repository

Dani Vainstein & Monika Arora Gautam

24

Mapping Dialogs






Open the Flight Reservation application if is not opened, and click
OK.
CAUTION : always be aware, specially when adding objects, that
you have only one instance of the AUT open.
What would happen? These child objects would be added under a
new “Dialog_2” parent object and would not be recognized during
playback.

Dani Vainstein & Monika Arora Gautam

25

Map Flight Reservations dialogs


Click OK to get Flight Reservations dialog.

Dani Vainstein & Monika Arora Gautam

26

Naming Conventions





Remove space between “Flight Reservation” and change it
to “FlightReservation".
Change the “static” to “Icon”.
Change “Please enter agent name” to “Msg”.

Dani Vainstein & Monika Arora Gautam

27

Mapping other dialogs?
Return to the same process and add all the objects/
dialog w.r.t. Logging in to Flight Application.
Try to map the following dialogs :







Why these are not added to the repository?

Dani Vainstein & Monika Arora Gautam

28

Mapping dialogs









That’s because all the messages has the same title “Flight
Reservations”.
For QTP all these dialogs are same.
Is it good? Of course! Otherwise you will have to map
every single message in your AUT.
But, what about the message displayed in the dialog?
The text is not the same.
This you will learn through the Object Identification
feature and the Object Spy in next upcoming slides.

Dani Vainstein & Monika Arora Gautam

29

Understanding object identification



Select the object Spy. From menu : Tools  Object Spy
Or from toolbar as shown below.

Object Spy

Dani Vainstein & Monika Arora Gautam

30

Object Spy




Dani Vainstein & Monika Arora Gautam

Click on the finger point and select the
message in the dialog.

Save a screenshot of the spy in “My
Pictures” and do same for this dialog
and compare properties for both the
messages.

31

Object Spy - Msg

Dani Vainstein & Monika Arora Gautam

32

Comparing



The properties are quite different. The key of the
mystery is the property window id, they are the
same = 65535.

Dani Vainstein & Monika Arora Gautam

33

Understanding The Object Identification


Another look to the repository will show us that the
object is identified by QTP using the native class and
window id, those properties have the same values

 You will see further,

why, this is a very big
advantage.

Dani Vainstein & Monika Arora Gautam

34

Highlight the Dialogs Messages in the
Application




Select the Msg object in the repository and Click the
“highlight in application” button while one of the popups is displayed, see what happens.
One by one do the same for other pop-ups, and see what
happens.

Highlight in application

Dani Vainstein & Monika Arora Gautam

35

Conclusion






Logically, QTP identifies all the messages inside
the same dialog as the only one message.
Imagine you have to map all the different
messages for same instance of dialog in your
AUT. It’s lot of job.
However QTP takes care of it by its Object
Identification and Spy feature.

Dani Vainstein & Monika Arora Gautam

36

Saving the Test



Save The Test.
Every Time you see * near the test name, it means that
the test is not saved. Always remember to save your
work.
Not Saved

Dani Vainstein & Monika Arora Gautam

37

Summary






We have created a new reusable action
guiLogin/guiLogin module
We a created a second new reusable action
guiLogin/CheckDialog
In this session we’ve learned how to map the Login
window and messages dialogs.

Dani Vainstein & Monika Arora Gautam

38

Special Thanks To


Bharathi Babu, India, Pune.



Ayyappa Koppolu, India, Pune.



Paul Grossman, USA, Chicago.



Sumit Singhal, India, Bangalore.



Sanjeev Mathur, India, Noida.



Manasa VN, India, Bangalore.



Prakash Kumar, India, Pune.



Richi Sharma, USA, New Jersey.



Janardhan Kalvakuntla, USA, New England.



Indlamudi Rajesh, India, Mumbai.

 Vainstein
Joydeep
Das,Arora
India,
Hyderabad.
Dani
& Monika
Gautam

39

Make sure to visit us for:






Tutorials
Articles
Projects
And much more

@
www.AdvancedQTP.com

Dani Vainstein & Monika Arora Gautam

40


Slide 37

Login Module

Building the Login GUI Layer Module

1

Topics covered







Create a new test, and classify it as a reusable
action under GUI Layer.
Adding Object to Local Object Repository.
Mapping Dialogs/ Objects.
Smart Identification.
Modify and save Test Settings.

Dani Vainstein & Monika Arora Gautam

2

Before you start…


Before starting the presentation, read about the
following topics in QTP help.






Reusable-Actions
Smart identification.
Action Parameters.
Object Spy.





Test Object Properties.
Run-time Object Properties.

Object Repository.

Dani Vainstein & Monika Arora Gautam

3

Things to Remember…




The Application Under Test (AUT) uses embedded
ActiveX objects, so when you first time open QTP, make
sure to check ActiveX option from Add-in manager.
When QTP is launched, be sure only the ActiveX option
is checked in the add-in manager.

Dani Vainstein & Monika Arora Gautam

4

guiLogin Module
Automation


FR
LIB
RA

Save the current test under
name = “guiLogin” in folder
FR\RA\GL

BL
GL

RS
DOC
DAT
SETTING

guiLogin

TESTS
RES
BATCH
ENV
Dani Vainstein & Monika Arora Gautam

5

guiLogin - Introduction








We are going to create a new Test and
reusable action.
The Test name would be guiLogin, because it
handles the “Login” dialog.
The main action will also called guiLogin. It
will be a reusable action, for further tests.
The guiLogin will receive an input parameter
of string type.

Dani Vainstein & Monika Arora Gautam

6

Modifying the Test Settings - Properties Tab

Description :
The guiLogin Module Stores all the actions required for the login process
Remark : associated add-ins : ActiveX only

Dani Vainstein & Monika Arora Gautam

7

Run Tab
Run one iteration only

Save The Test
Pop up
Message box
Disable Smart Identification
During the run session

Dani Vainstein & Monika Arora Gautam

8

Reusable action






We will create Reusable Action named guiLogin and set
the Action properties.
The guiLogin module ( reusable action ) implements all
the available actions on the Dialog login screen.
The Parameter StepName will be used as an instruction
to the reusable action i.e. “SetData”, “CheckLogo” etc.

Dani Vainstein & Monika Arora Gautam

9

guiLogin Reusable-Action


From Menu  Edit  Action  Action
Properties

Dani Vainstein & Monika Arora Gautam

10

guiLogin - General Tab
Change
Action
Name

Add
Description
Mark
Reusable

Dani Vainstein & Monika Arora Gautam

11

Parameters Tab – Add StepName


Add a new Input Parameter ( Click on + )
Add
StepName
Input
Parameter

Type
String

Dani Vainstein & Monika Arora Gautam

Add
Description

Default
Leave Empty

12

Mapping The Dialog Login







The guiLogin will hold a local repository.
The advantage of the OOT (Object Oriented Testing )
methodology, I think ( and others may disagree with me
) is that by having a reusable action per-screen, you
don’t have to maintain a shared object repository.
Especially when you work within a team, it helps
sparing the locks on the shared working files.
Mapping the application objects – is very important, you
should map your application before you start to “script”

Dani Vainstein & Monika Arora Gautam

13

Adding Objects to Local Repository




Open the Flight Application from Start  All Programs
 QuickTest Professional  Sample Applications 
Flight.
Do not login, just leave the window open.

Dani Vainstein & Monika Arora Gautam

14

Adding Objects to Local Repository





Open the local object repository from
menu  Resources  Object Repository.
Or just type Ctrl+R in QTP application.
QTP will show an hand icon.

Click Add objects in toolbar
Or
Object  Add objects To Local…

Dani Vainstein & Monika Arora Gautam

15

Mapping objects
Point the title-bar of dialog

Click OK
All Objects types

Click OK

Dani Vainstein & Monika Arora Gautam

16

Naming conventions



All the objects will be added to the local repository.
Remove spaces and non-alphanumeric characters from
Object Names.




Change “Agent Name:” to “AgentName”.
Change “Static” to “Logo”.
Remove all names with : (colon ) at the end of the name.

Dani Vainstein & Monika Arora Gautam

17

Why Renaming?











Sometimes there are two blanks instead of one; between two words.
According to my experience, nobody will make a new version for
such a mistake. Their answer ( R&D ) would be
“We will fix it later”.
For QTP this is critical, as it will not identify two spaces instead of
one.
The name “Static” says nothing to you and/or your colleagues, but
with “logo” you have no doubt.
QTP sometimes gives insignificant names to objects i.e. “button_1”
or “button_2”.
It is better to change these, to more descriptive names.
Changing logical names does not effect the QTP object recognition
mechanism.

Dani Vainstein & Monika Arora Gautam

18

Naming conventions

See the logical names
Convention changes

Dani Vainstein & Monika Arora Gautam

19

CheckDialog Reusable Action






We will learn how to check different dialog
messages that share same dialog title “Flight
Reservation”.
We will create a new reusable action inside the
guiLogin module, and we will call it
“CheckDialog”.
I will explain later, the considerations of this
decision.

Dani Vainstein & Monika Arora Gautam

20

Creating a new reusable action




From Menu : Insert  Call to New Action
Type : Hold the ALT key, and type ( I + N )
From toolbar as shown below:

Call to New Action

Dani Vainstein & Monika Arora Gautam

21

Adding a new reusable action
Name : CheckDialog

Description :
Manage all dialog checkpoints
under guiLogin

Reusable Action

Location : At the end of the test

Dani Vainstein & Monika Arora Gautam

22

CheckDialog Created




Now you should have two reusable actions.
Notice the actions listbox ( left ) and the
keyword view ( right ).

Dani Vainstein & Monika Arora Gautam

23

Mapping Dialogs



Move to Expert View Action CheckDialogs.
Open the local repository : Resources  Object
Repository
Or Type CTRL+R



Or from toolbar as shown below:




Object Repository

Dani Vainstein & Monika Arora Gautam

24

Mapping Dialogs






Open the Flight Reservation application if is not opened, and click
OK.
CAUTION : always be aware, specially when adding objects, that
you have only one instance of the AUT open.
What would happen? These child objects would be added under a
new “Dialog_2” parent object and would not be recognized during
playback.

Dani Vainstein & Monika Arora Gautam

25

Map Flight Reservations dialogs


Click OK to get Flight Reservations dialog.

Dani Vainstein & Monika Arora Gautam

26

Naming Conventions





Remove space between “Flight Reservation” and change it
to “FlightReservation".
Change the “static” to “Icon”.
Change “Please enter agent name” to “Msg”.

Dani Vainstein & Monika Arora Gautam

27

Mapping other dialogs?
Return to the same process and add all the objects/
dialog w.r.t. Logging in to Flight Application.
Try to map the following dialogs :







Why these are not added to the repository?

Dani Vainstein & Monika Arora Gautam

28

Mapping dialogs









That’s because all the messages has the same title “Flight
Reservations”.
For QTP all these dialogs are same.
Is it good? Of course! Otherwise you will have to map
every single message in your AUT.
But, what about the message displayed in the dialog?
The text is not the same.
This you will learn through the Object Identification
feature and the Object Spy in next upcoming slides.

Dani Vainstein & Monika Arora Gautam

29

Understanding object identification



Select the object Spy. From menu : Tools  Object Spy
Or from toolbar as shown below.

Object Spy

Dani Vainstein & Monika Arora Gautam

30

Object Spy




Dani Vainstein & Monika Arora Gautam

Click on the finger point and select the
message in the dialog.

Save a screenshot of the spy in “My
Pictures” and do same for this dialog
and compare properties for both the
messages.

31

Object Spy - Msg

Dani Vainstein & Monika Arora Gautam

32

Comparing



The properties are quite different. The key of the
mystery is the property window id, they are the
same = 65535.

Dani Vainstein & Monika Arora Gautam

33

Understanding The Object Identification


Another look to the repository will show us that the
object is identified by QTP using the native class and
window id, those properties have the same values

 You will see further,

why, this is a very big
advantage.

Dani Vainstein & Monika Arora Gautam

34

Highlight the Dialogs Messages in the
Application




Select the Msg object in the repository and Click the
“highlight in application” button while one of the popups is displayed, see what happens.
One by one do the same for other pop-ups, and see what
happens.

Highlight in application

Dani Vainstein & Monika Arora Gautam

35

Conclusion






Logically, QTP identifies all the messages inside
the same dialog as the only one message.
Imagine you have to map all the different
messages for same instance of dialog in your
AUT. It’s lot of job.
However QTP takes care of it by its Object
Identification and Spy feature.

Dani Vainstein & Monika Arora Gautam

36

Saving the Test



Save The Test.
Every Time you see * near the test name, it means that
the test is not saved. Always remember to save your
work.
Not Saved

Dani Vainstein & Monika Arora Gautam

37

Summary






We have created a new reusable action
guiLogin/guiLogin module
We a created a second new reusable action
guiLogin/CheckDialog
In this session we’ve learned how to map the Login
window and messages dialogs.

Dani Vainstein & Monika Arora Gautam

38

Special Thanks To


Bharathi Babu, India, Pune.



Ayyappa Koppolu, India, Pune.



Paul Grossman, USA, Chicago.



Sumit Singhal, India, Bangalore.



Sanjeev Mathur, India, Noida.



Manasa VN, India, Bangalore.



Prakash Kumar, India, Pune.



Richi Sharma, USA, New Jersey.



Janardhan Kalvakuntla, USA, New England.



Indlamudi Rajesh, India, Mumbai.

 Vainstein
Joydeep
Das,Arora
India,
Hyderabad.
Dani
& Monika
Gautam

39

Make sure to visit us for:






Tutorials
Articles
Projects
And much more

@
www.AdvancedQTP.com

Dani Vainstein & Monika Arora Gautam

40


Slide 38

Login Module

Building the Login GUI Layer Module

1

Topics covered







Create a new test, and classify it as a reusable
action under GUI Layer.
Adding Object to Local Object Repository.
Mapping Dialogs/ Objects.
Smart Identification.
Modify and save Test Settings.

Dani Vainstein & Monika Arora Gautam

2

Before you start…


Before starting the presentation, read about the
following topics in QTP help.






Reusable-Actions
Smart identification.
Action Parameters.
Object Spy.





Test Object Properties.
Run-time Object Properties.

Object Repository.

Dani Vainstein & Monika Arora Gautam

3

Things to Remember…




The Application Under Test (AUT) uses embedded
ActiveX objects, so when you first time open QTP, make
sure to check ActiveX option from Add-in manager.
When QTP is launched, be sure only the ActiveX option
is checked in the add-in manager.

Dani Vainstein & Monika Arora Gautam

4

guiLogin Module
Automation


FR
LIB
RA

Save the current test under
name = “guiLogin” in folder
FR\RA\GL

BL
GL

RS
DOC
DAT
SETTING

guiLogin

TESTS
RES
BATCH
ENV
Dani Vainstein & Monika Arora Gautam

5

guiLogin - Introduction








We are going to create a new Test and
reusable action.
The Test name would be guiLogin, because it
handles the “Login” dialog.
The main action will also called guiLogin. It
will be a reusable action, for further tests.
The guiLogin will receive an input parameter
of string type.

Dani Vainstein & Monika Arora Gautam

6

Modifying the Test Settings - Properties Tab

Description :
The guiLogin Module Stores all the actions required for the login process
Remark : associated add-ins : ActiveX only

Dani Vainstein & Monika Arora Gautam

7

Run Tab
Run one iteration only

Save The Test
Pop up
Message box
Disable Smart Identification
During the run session

Dani Vainstein & Monika Arora Gautam

8

Reusable action






We will create Reusable Action named guiLogin and set
the Action properties.
The guiLogin module ( reusable action ) implements all
the available actions on the Dialog login screen.
The Parameter StepName will be used as an instruction
to the reusable action i.e. “SetData”, “CheckLogo” etc.

Dani Vainstein & Monika Arora Gautam

9

guiLogin Reusable-Action


From Menu  Edit  Action  Action
Properties

Dani Vainstein & Monika Arora Gautam

10

guiLogin - General Tab
Change
Action
Name

Add
Description
Mark
Reusable

Dani Vainstein & Monika Arora Gautam

11

Parameters Tab – Add StepName


Add a new Input Parameter ( Click on + )
Add
StepName
Input
Parameter

Type
String

Dani Vainstein & Monika Arora Gautam

Add
Description

Default
Leave Empty

12

Mapping The Dialog Login







The guiLogin will hold a local repository.
The advantage of the OOT (Object Oriented Testing )
methodology, I think ( and others may disagree with me
) is that by having a reusable action per-screen, you
don’t have to maintain a shared object repository.
Especially when you work within a team, it helps
sparing the locks on the shared working files.
Mapping the application objects – is very important, you
should map your application before you start to “script”

Dani Vainstein & Monika Arora Gautam

13

Adding Objects to Local Repository




Open the Flight Application from Start  All Programs
 QuickTest Professional  Sample Applications 
Flight.
Do not login, just leave the window open.

Dani Vainstein & Monika Arora Gautam

14

Adding Objects to Local Repository





Open the local object repository from
menu  Resources  Object Repository.
Or just type Ctrl+R in QTP application.
QTP will show an hand icon.

Click Add objects in toolbar
Or
Object  Add objects To Local…

Dani Vainstein & Monika Arora Gautam

15

Mapping objects
Point the title-bar of dialog

Click OK
All Objects types

Click OK

Dani Vainstein & Monika Arora Gautam

16

Naming conventions



All the objects will be added to the local repository.
Remove spaces and non-alphanumeric characters from
Object Names.




Change “Agent Name:” to “AgentName”.
Change “Static” to “Logo”.
Remove all names with : (colon ) at the end of the name.

Dani Vainstein & Monika Arora Gautam

17

Why Renaming?











Sometimes there are two blanks instead of one; between two words.
According to my experience, nobody will make a new version for
such a mistake. Their answer ( R&D ) would be
“We will fix it later”.
For QTP this is critical, as it will not identify two spaces instead of
one.
The name “Static” says nothing to you and/or your colleagues, but
with “logo” you have no doubt.
QTP sometimes gives insignificant names to objects i.e. “button_1”
or “button_2”.
It is better to change these, to more descriptive names.
Changing logical names does not effect the QTP object recognition
mechanism.

Dani Vainstein & Monika Arora Gautam

18

Naming conventions

See the logical names
Convention changes

Dani Vainstein & Monika Arora Gautam

19

CheckDialog Reusable Action






We will learn how to check different dialog
messages that share same dialog title “Flight
Reservation”.
We will create a new reusable action inside the
guiLogin module, and we will call it
“CheckDialog”.
I will explain later, the considerations of this
decision.

Dani Vainstein & Monika Arora Gautam

20

Creating a new reusable action




From Menu : Insert  Call to New Action
Type : Hold the ALT key, and type ( I + N )
From toolbar as shown below:

Call to New Action

Dani Vainstein & Monika Arora Gautam

21

Adding a new reusable action
Name : CheckDialog

Description :
Manage all dialog checkpoints
under guiLogin

Reusable Action

Location : At the end of the test

Dani Vainstein & Monika Arora Gautam

22

CheckDialog Created




Now you should have two reusable actions.
Notice the actions listbox ( left ) and the
keyword view ( right ).

Dani Vainstein & Monika Arora Gautam

23

Mapping Dialogs



Move to Expert View Action CheckDialogs.
Open the local repository : Resources  Object
Repository
Or Type CTRL+R



Or from toolbar as shown below:




Object Repository

Dani Vainstein & Monika Arora Gautam

24

Mapping Dialogs






Open the Flight Reservation application if is not opened, and click
OK.
CAUTION : always be aware, specially when adding objects, that
you have only one instance of the AUT open.
What would happen? These child objects would be added under a
new “Dialog_2” parent object and would not be recognized during
playback.

Dani Vainstein & Monika Arora Gautam

25

Map Flight Reservations dialogs


Click OK to get Flight Reservations dialog.

Dani Vainstein & Monika Arora Gautam

26

Naming Conventions





Remove space between “Flight Reservation” and change it
to “FlightReservation".
Change the “static” to “Icon”.
Change “Please enter agent name” to “Msg”.

Dani Vainstein & Monika Arora Gautam

27

Mapping other dialogs?
Return to the same process and add all the objects/
dialog w.r.t. Logging in to Flight Application.
Try to map the following dialogs :







Why these are not added to the repository?

Dani Vainstein & Monika Arora Gautam

28

Mapping dialogs









That’s because all the messages has the same title “Flight
Reservations”.
For QTP all these dialogs are same.
Is it good? Of course! Otherwise you will have to map
every single message in your AUT.
But, what about the message displayed in the dialog?
The text is not the same.
This you will learn through the Object Identification
feature and the Object Spy in next upcoming slides.

Dani Vainstein & Monika Arora Gautam

29

Understanding object identification



Select the object Spy. From menu : Tools  Object Spy
Or from toolbar as shown below.

Object Spy

Dani Vainstein & Monika Arora Gautam

30

Object Spy




Dani Vainstein & Monika Arora Gautam

Click on the finger point and select the
message in the dialog.

Save a screenshot of the spy in “My
Pictures” and do same for this dialog
and compare properties for both the
messages.

31

Object Spy - Msg

Dani Vainstein & Monika Arora Gautam

32

Comparing



The properties are quite different. The key of the
mystery is the property window id, they are the
same = 65535.

Dani Vainstein & Monika Arora Gautam

33

Understanding The Object Identification


Another look to the repository will show us that the
object is identified by QTP using the native class and
window id, those properties have the same values

 You will see further,

why, this is a very big
advantage.

Dani Vainstein & Monika Arora Gautam

34

Highlight the Dialogs Messages in the
Application




Select the Msg object in the repository and Click the
“highlight in application” button while one of the popups is displayed, see what happens.
One by one do the same for other pop-ups, and see what
happens.

Highlight in application

Dani Vainstein & Monika Arora Gautam

35

Conclusion






Logically, QTP identifies all the messages inside
the same dialog as the only one message.
Imagine you have to map all the different
messages for same instance of dialog in your
AUT. It’s lot of job.
However QTP takes care of it by its Object
Identification and Spy feature.

Dani Vainstein & Monika Arora Gautam

36

Saving the Test



Save The Test.
Every Time you see * near the test name, it means that
the test is not saved. Always remember to save your
work.
Not Saved

Dani Vainstein & Monika Arora Gautam

37

Summary






We have created a new reusable action
guiLogin/guiLogin module
We a created a second new reusable action
guiLogin/CheckDialog
In this session we’ve learned how to map the Login
window and messages dialogs.

Dani Vainstein & Monika Arora Gautam

38

Special Thanks To


Bharathi Babu, India, Pune.



Ayyappa Koppolu, India, Pune.



Paul Grossman, USA, Chicago.



Sumit Singhal, India, Bangalore.



Sanjeev Mathur, India, Noida.



Manasa VN, India, Bangalore.



Prakash Kumar, India, Pune.



Richi Sharma, USA, New Jersey.



Janardhan Kalvakuntla, USA, New England.



Indlamudi Rajesh, India, Mumbai.

 Vainstein
Joydeep
Das,Arora
India,
Hyderabad.
Dani
& Monika
Gautam

39

Make sure to visit us for:






Tutorials
Articles
Projects
And much more

@
www.AdvancedQTP.com

Dani Vainstein & Monika Arora Gautam

40


Slide 39

Login Module

Building the Login GUI Layer Module

1

Topics covered







Create a new test, and classify it as a reusable
action under GUI Layer.
Adding Object to Local Object Repository.
Mapping Dialogs/ Objects.
Smart Identification.
Modify and save Test Settings.

Dani Vainstein & Monika Arora Gautam

2

Before you start…


Before starting the presentation, read about the
following topics in QTP help.






Reusable-Actions
Smart identification.
Action Parameters.
Object Spy.





Test Object Properties.
Run-time Object Properties.

Object Repository.

Dani Vainstein & Monika Arora Gautam

3

Things to Remember…




The Application Under Test (AUT) uses embedded
ActiveX objects, so when you first time open QTP, make
sure to check ActiveX option from Add-in manager.
When QTP is launched, be sure only the ActiveX option
is checked in the add-in manager.

Dani Vainstein & Monika Arora Gautam

4

guiLogin Module
Automation


FR
LIB
RA

Save the current test under
name = “guiLogin” in folder
FR\RA\GL

BL
GL

RS
DOC
DAT
SETTING

guiLogin

TESTS
RES
BATCH
ENV
Dani Vainstein & Monika Arora Gautam

5

guiLogin - Introduction








We are going to create a new Test and
reusable action.
The Test name would be guiLogin, because it
handles the “Login” dialog.
The main action will also called guiLogin. It
will be a reusable action, for further tests.
The guiLogin will receive an input parameter
of string type.

Dani Vainstein & Monika Arora Gautam

6

Modifying the Test Settings - Properties Tab

Description :
The guiLogin Module Stores all the actions required for the login process
Remark : associated add-ins : ActiveX only

Dani Vainstein & Monika Arora Gautam

7

Run Tab
Run one iteration only

Save The Test
Pop up
Message box
Disable Smart Identification
During the run session

Dani Vainstein & Monika Arora Gautam

8

Reusable action






We will create Reusable Action named guiLogin and set
the Action properties.
The guiLogin module ( reusable action ) implements all
the available actions on the Dialog login screen.
The Parameter StepName will be used as an instruction
to the reusable action i.e. “SetData”, “CheckLogo” etc.

Dani Vainstein & Monika Arora Gautam

9

guiLogin Reusable-Action


From Menu  Edit  Action  Action
Properties

Dani Vainstein & Monika Arora Gautam

10

guiLogin - General Tab
Change
Action
Name

Add
Description
Mark
Reusable

Dani Vainstein & Monika Arora Gautam

11

Parameters Tab – Add StepName


Add a new Input Parameter ( Click on + )
Add
StepName
Input
Parameter

Type
String

Dani Vainstein & Monika Arora Gautam

Add
Description

Default
Leave Empty

12

Mapping The Dialog Login







The guiLogin will hold a local repository.
The advantage of the OOT (Object Oriented Testing )
methodology, I think ( and others may disagree with me
) is that by having a reusable action per-screen, you
don’t have to maintain a shared object repository.
Especially when you work within a team, it helps
sparing the locks on the shared working files.
Mapping the application objects – is very important, you
should map your application before you start to “script”

Dani Vainstein & Monika Arora Gautam

13

Adding Objects to Local Repository




Open the Flight Application from Start  All Programs
 QuickTest Professional  Sample Applications 
Flight.
Do not login, just leave the window open.

Dani Vainstein & Monika Arora Gautam

14

Adding Objects to Local Repository





Open the local object repository from
menu  Resources  Object Repository.
Or just type Ctrl+R in QTP application.
QTP will show an hand icon.

Click Add objects in toolbar
Or
Object  Add objects To Local…

Dani Vainstein & Monika Arora Gautam

15

Mapping objects
Point the title-bar of dialog

Click OK
All Objects types

Click OK

Dani Vainstein & Monika Arora Gautam

16

Naming conventions



All the objects will be added to the local repository.
Remove spaces and non-alphanumeric characters from
Object Names.




Change “Agent Name:” to “AgentName”.
Change “Static” to “Logo”.
Remove all names with : (colon ) at the end of the name.

Dani Vainstein & Monika Arora Gautam

17

Why Renaming?











Sometimes there are two blanks instead of one; between two words.
According to my experience, nobody will make a new version for
such a mistake. Their answer ( R&D ) would be
“We will fix it later”.
For QTP this is critical, as it will not identify two spaces instead of
one.
The name “Static” says nothing to you and/or your colleagues, but
with “logo” you have no doubt.
QTP sometimes gives insignificant names to objects i.e. “button_1”
or “button_2”.
It is better to change these, to more descriptive names.
Changing logical names does not effect the QTP object recognition
mechanism.

Dani Vainstein & Monika Arora Gautam

18

Naming conventions

See the logical names
Convention changes

Dani Vainstein & Monika Arora Gautam

19

CheckDialog Reusable Action






We will learn how to check different dialog
messages that share same dialog title “Flight
Reservation”.
We will create a new reusable action inside the
guiLogin module, and we will call it
“CheckDialog”.
I will explain later, the considerations of this
decision.

Dani Vainstein & Monika Arora Gautam

20

Creating a new reusable action




From Menu : Insert  Call to New Action
Type : Hold the ALT key, and type ( I + N )
From toolbar as shown below:

Call to New Action

Dani Vainstein & Monika Arora Gautam

21

Adding a new reusable action
Name : CheckDialog

Description :
Manage all dialog checkpoints
under guiLogin

Reusable Action

Location : At the end of the test

Dani Vainstein & Monika Arora Gautam

22

CheckDialog Created




Now you should have two reusable actions.
Notice the actions listbox ( left ) and the
keyword view ( right ).

Dani Vainstein & Monika Arora Gautam

23

Mapping Dialogs



Move to Expert View Action CheckDialogs.
Open the local repository : Resources  Object
Repository
Or Type CTRL+R



Or from toolbar as shown below:




Object Repository

Dani Vainstein & Monika Arora Gautam

24

Mapping Dialogs






Open the Flight Reservation application if is not opened, and click
OK.
CAUTION : always be aware, specially when adding objects, that
you have only one instance of the AUT open.
What would happen? These child objects would be added under a
new “Dialog_2” parent object and would not be recognized during
playback.

Dani Vainstein & Monika Arora Gautam

25

Map Flight Reservations dialogs


Click OK to get Flight Reservations dialog.

Dani Vainstein & Monika Arora Gautam

26

Naming Conventions





Remove space between “Flight Reservation” and change it
to “FlightReservation".
Change the “static” to “Icon”.
Change “Please enter agent name” to “Msg”.

Dani Vainstein & Monika Arora Gautam

27

Mapping other dialogs?
Return to the same process and add all the objects/
dialog w.r.t. Logging in to Flight Application.
Try to map the following dialogs :







Why these are not added to the repository?

Dani Vainstein & Monika Arora Gautam

28

Mapping dialogs









That’s because all the messages has the same title “Flight
Reservations”.
For QTP all these dialogs are same.
Is it good? Of course! Otherwise you will have to map
every single message in your AUT.
But, what about the message displayed in the dialog?
The text is not the same.
This you will learn through the Object Identification
feature and the Object Spy in next upcoming slides.

Dani Vainstein & Monika Arora Gautam

29

Understanding object identification



Select the object Spy. From menu : Tools  Object Spy
Or from toolbar as shown below.

Object Spy

Dani Vainstein & Monika Arora Gautam

30

Object Spy




Dani Vainstein & Monika Arora Gautam

Click on the finger point and select the
message in the dialog.

Save a screenshot of the spy in “My
Pictures” and do same for this dialog
and compare properties for both the
messages.

31

Object Spy - Msg

Dani Vainstein & Monika Arora Gautam

32

Comparing



The properties are quite different. The key of the
mystery is the property window id, they are the
same = 65535.

Dani Vainstein & Monika Arora Gautam

33

Understanding The Object Identification


Another look to the repository will show us that the
object is identified by QTP using the native class and
window id, those properties have the same values

 You will see further,

why, this is a very big
advantage.

Dani Vainstein & Monika Arora Gautam

34

Highlight the Dialogs Messages in the
Application




Select the Msg object in the repository and Click the
“highlight in application” button while one of the popups is displayed, see what happens.
One by one do the same for other pop-ups, and see what
happens.

Highlight in application

Dani Vainstein & Monika Arora Gautam

35

Conclusion






Logically, QTP identifies all the messages inside
the same dialog as the only one message.
Imagine you have to map all the different
messages for same instance of dialog in your
AUT. It’s lot of job.
However QTP takes care of it by its Object
Identification and Spy feature.

Dani Vainstein & Monika Arora Gautam

36

Saving the Test



Save The Test.
Every Time you see * near the test name, it means that
the test is not saved. Always remember to save your
work.
Not Saved

Dani Vainstein & Monika Arora Gautam

37

Summary






We have created a new reusable action
guiLogin/guiLogin module
We a created a second new reusable action
guiLogin/CheckDialog
In this session we’ve learned how to map the Login
window and messages dialogs.

Dani Vainstein & Monika Arora Gautam

38

Special Thanks To


Bharathi Babu, India, Pune.



Ayyappa Koppolu, India, Pune.



Paul Grossman, USA, Chicago.



Sumit Singhal, India, Bangalore.



Sanjeev Mathur, India, Noida.



Manasa VN, India, Bangalore.



Prakash Kumar, India, Pune.



Richi Sharma, USA, New Jersey.



Janardhan Kalvakuntla, USA, New England.



Indlamudi Rajesh, India, Mumbai.

 Vainstein
Joydeep
Das,Arora
India,
Hyderabad.
Dani
& Monika
Gautam

39

Make sure to visit us for:






Tutorials
Articles
Projects
And much more

@
www.AdvancedQTP.com

Dani Vainstein & Monika Arora Gautam

40


Slide 40

Login Module

Building the Login GUI Layer Module

1

Topics covered







Create a new test, and classify it as a reusable
action under GUI Layer.
Adding Object to Local Object Repository.
Mapping Dialogs/ Objects.
Smart Identification.
Modify and save Test Settings.

Dani Vainstein & Monika Arora Gautam

2

Before you start…


Before starting the presentation, read about the
following topics in QTP help.






Reusable-Actions
Smart identification.
Action Parameters.
Object Spy.





Test Object Properties.
Run-time Object Properties.

Object Repository.

Dani Vainstein & Monika Arora Gautam

3

Things to Remember…




The Application Under Test (AUT) uses embedded
ActiveX objects, so when you first time open QTP, make
sure to check ActiveX option from Add-in manager.
When QTP is launched, be sure only the ActiveX option
is checked in the add-in manager.

Dani Vainstein & Monika Arora Gautam

4

guiLogin Module
Automation


FR
LIB
RA

Save the current test under
name = “guiLogin” in folder
FR\RA\GL

BL
GL

RS
DOC
DAT
SETTING

guiLogin

TESTS
RES
BATCH
ENV
Dani Vainstein & Monika Arora Gautam

5

guiLogin - Introduction








We are going to create a new Test and
reusable action.
The Test name would be guiLogin, because it
handles the “Login” dialog.
The main action will also called guiLogin. It
will be a reusable action, for further tests.
The guiLogin will receive an input parameter
of string type.

Dani Vainstein & Monika Arora Gautam

6

Modifying the Test Settings - Properties Tab

Description :
The guiLogin Module Stores all the actions required for the login process
Remark : associated add-ins : ActiveX only

Dani Vainstein & Monika Arora Gautam

7

Run Tab
Run one iteration only

Save The Test
Pop up
Message box
Disable Smart Identification
During the run session

Dani Vainstein & Monika Arora Gautam

8

Reusable action






We will create Reusable Action named guiLogin and set
the Action properties.
The guiLogin module ( reusable action ) implements all
the available actions on the Dialog login screen.
The Parameter StepName will be used as an instruction
to the reusable action i.e. “SetData”, “CheckLogo” etc.

Dani Vainstein & Monika Arora Gautam

9

guiLogin Reusable-Action


From Menu  Edit  Action  Action
Properties

Dani Vainstein & Monika Arora Gautam

10

guiLogin - General Tab
Change
Action
Name

Add
Description
Mark
Reusable

Dani Vainstein & Monika Arora Gautam

11

Parameters Tab – Add StepName


Add a new Input Parameter ( Click on + )
Add
StepName
Input
Parameter

Type
String

Dani Vainstein & Monika Arora Gautam

Add
Description

Default
Leave Empty

12

Mapping The Dialog Login







The guiLogin will hold a local repository.
The advantage of the OOT (Object Oriented Testing )
methodology, I think ( and others may disagree with me
) is that by having a reusable action per-screen, you
don’t have to maintain a shared object repository.
Especially when you work within a team, it helps
sparing the locks on the shared working files.
Mapping the application objects – is very important, you
should map your application before you start to “script”

Dani Vainstein & Monika Arora Gautam

13

Adding Objects to Local Repository




Open the Flight Application from Start  All Programs
 QuickTest Professional  Sample Applications 
Flight.
Do not login, just leave the window open.

Dani Vainstein & Monika Arora Gautam

14

Adding Objects to Local Repository





Open the local object repository from
menu  Resources  Object Repository.
Or just type Ctrl+R in QTP application.
QTP will show an hand icon.

Click Add objects in toolbar
Or
Object  Add objects To Local…

Dani Vainstein & Monika Arora Gautam

15

Mapping objects
Point the title-bar of dialog

Click OK
All Objects types

Click OK

Dani Vainstein & Monika Arora Gautam

16

Naming conventions



All the objects will be added to the local repository.
Remove spaces and non-alphanumeric characters from
Object Names.




Change “Agent Name:” to “AgentName”.
Change “Static” to “Logo”.
Remove all names with : (colon ) at the end of the name.

Dani Vainstein & Monika Arora Gautam

17

Why Renaming?











Sometimes there are two blanks instead of one; between two words.
According to my experience, nobody will make a new version for
such a mistake. Their answer ( R&D ) would be
“We will fix it later”.
For QTP this is critical, as it will not identify two spaces instead of
one.
The name “Static” says nothing to you and/or your colleagues, but
with “logo” you have no doubt.
QTP sometimes gives insignificant names to objects i.e. “button_1”
or “button_2”.
It is better to change these, to more descriptive names.
Changing logical names does not effect the QTP object recognition
mechanism.

Dani Vainstein & Monika Arora Gautam

18

Naming conventions

See the logical names
Convention changes

Dani Vainstein & Monika Arora Gautam

19

CheckDialog Reusable Action






We will learn how to check different dialog
messages that share same dialog title “Flight
Reservation”.
We will create a new reusable action inside the
guiLogin module, and we will call it
“CheckDialog”.
I will explain later, the considerations of this
decision.

Dani Vainstein & Monika Arora Gautam

20

Creating a new reusable action




From Menu : Insert  Call to New Action
Type : Hold the ALT key, and type ( I + N )
From toolbar as shown below:

Call to New Action

Dani Vainstein & Monika Arora Gautam

21

Adding a new reusable action
Name : CheckDialog

Description :
Manage all dialog checkpoints
under guiLogin

Reusable Action

Location : At the end of the test

Dani Vainstein & Monika Arora Gautam

22

CheckDialog Created




Now you should have two reusable actions.
Notice the actions listbox ( left ) and the
keyword view ( right ).

Dani Vainstein & Monika Arora Gautam

23

Mapping Dialogs



Move to Expert View Action CheckDialogs.
Open the local repository : Resources  Object
Repository
Or Type CTRL+R



Or from toolbar as shown below:




Object Repository

Dani Vainstein & Monika Arora Gautam

24

Mapping Dialogs






Open the Flight Reservation application if is not opened, and click
OK.
CAUTION : always be aware, specially when adding objects, that
you have only one instance of the AUT open.
What would happen? These child objects would be added under a
new “Dialog_2” parent object and would not be recognized during
playback.

Dani Vainstein & Monika Arora Gautam

25

Map Flight Reservations dialogs


Click OK to get Flight Reservations dialog.

Dani Vainstein & Monika Arora Gautam

26

Naming Conventions





Remove space between “Flight Reservation” and change it
to “FlightReservation".
Change the “static” to “Icon”.
Change “Please enter agent name” to “Msg”.

Dani Vainstein & Monika Arora Gautam

27

Mapping other dialogs?
Return to the same process and add all the objects/
dialog w.r.t. Logging in to Flight Application.
Try to map the following dialogs :







Why these are not added to the repository?

Dani Vainstein & Monika Arora Gautam

28

Mapping dialogs









That’s because all the messages has the same title “Flight
Reservations”.
For QTP all these dialogs are same.
Is it good? Of course! Otherwise you will have to map
every single message in your AUT.
But, what about the message displayed in the dialog?
The text is not the same.
This you will learn through the Object Identification
feature and the Object Spy in next upcoming slides.

Dani Vainstein & Monika Arora Gautam

29

Understanding object identification



Select the object Spy. From menu : Tools  Object Spy
Or from toolbar as shown below.

Object Spy

Dani Vainstein & Monika Arora Gautam

30

Object Spy




Dani Vainstein & Monika Arora Gautam

Click on the finger point and select the
message in the dialog.

Save a screenshot of the spy in “My
Pictures” and do same for this dialog
and compare properties for both the
messages.

31

Object Spy - Msg

Dani Vainstein & Monika Arora Gautam

32

Comparing



The properties are quite different. The key of the
mystery is the property window id, they are the
same = 65535.

Dani Vainstein & Monika Arora Gautam

33

Understanding The Object Identification


Another look to the repository will show us that the
object is identified by QTP using the native class and
window id, those properties have the same values

 You will see further,

why, this is a very big
advantage.

Dani Vainstein & Monika Arora Gautam

34

Highlight the Dialogs Messages in the
Application




Select the Msg object in the repository and Click the
“highlight in application” button while one of the popups is displayed, see what happens.
One by one do the same for other pop-ups, and see what
happens.

Highlight in application

Dani Vainstein & Monika Arora Gautam

35

Conclusion






Logically, QTP identifies all the messages inside
the same dialog as the only one message.
Imagine you have to map all the different
messages for same instance of dialog in your
AUT. It’s lot of job.
However QTP takes care of it by its Object
Identification and Spy feature.

Dani Vainstein & Monika Arora Gautam

36

Saving the Test



Save The Test.
Every Time you see * near the test name, it means that
the test is not saved. Always remember to save your
work.
Not Saved

Dani Vainstein & Monika Arora Gautam

37

Summary






We have created a new reusable action
guiLogin/guiLogin module
We a created a second new reusable action
guiLogin/CheckDialog
In this session we’ve learned how to map the Login
window and messages dialogs.

Dani Vainstein & Monika Arora Gautam

38

Special Thanks To


Bharathi Babu, India, Pune.



Ayyappa Koppolu, India, Pune.



Paul Grossman, USA, Chicago.



Sumit Singhal, India, Bangalore.



Sanjeev Mathur, India, Noida.



Manasa VN, India, Bangalore.



Prakash Kumar, India, Pune.



Richi Sharma, USA, New Jersey.



Janardhan Kalvakuntla, USA, New England.



Indlamudi Rajesh, India, Mumbai.

 Vainstein
Joydeep
Das,Arora
India,
Hyderabad.
Dani
& Monika
Gautam

39

Make sure to visit us for:






Tutorials
Articles
Projects
And much more

@
www.AdvancedQTP.com

Dani Vainstein & Monika Arora Gautam

40