In Key Work Driven
Framework the script values will be written in Excel files and QTP will execute
them using Driver Script. Now this will explain how to execute the script which
is specified in Excel Files.
There are majorly two
approaches followed to make Keyword Driven Framework.
1. Specify
Script Values Directly in the Excel
2. Write
Global Functions for each and every application control and specify those
functions as keywords in Excel
Approach
1:
In the below table
there are 4 columns
Object
Class :- Class of the object on
which we are going to perform the operation
Object Properties :- Properties of the object
Operation :- The method to perform on the object
Value :- Input Data
Object Properties :- Properties of the object
Operation :- The method to perform on the object
Value :- Input Data
Object Class:Object properties:operation:value
Browser/page:Googlebrowser/page:setparent
WebEdit:searchedit:set:ritesh
WebButton:searchbutton:click
Browser/page:Googlebrowser/page:setparent
WebEdit:searchedit:set:ritesh
WebButton:searchbutton:click
Please remember that there is no method
is available called “SetParent” in QTP. But I am using this word as a condition
to set the parent of the object. I have delimited the Parent Object using “/”
and respectively I have used it for properties.
To go forward I
should have the properties specified in my Object Description Constants.
'Object Properties constants
Public Const GoogleBrowser = "name:=Google"
Public Const GooglePage = "title:=Google"
Public Const SearchEdit = "name:=q"
Public Const SearchButton = "name:=Google Search"
Why
do we need to specify object properties as constants?
We can specify properties directly in place of constants. But when you
get a failure in the script, you might not able to identify where exactly the
error occurs.
Object Class:Object properties:operation:value
Browser/page:"name:=Google"/"title:=Google":Setparent
WebEdit:"name:=q",set
Browser/page:"name:=Google"/"title:=Google":Setparent
WebEdit:"name:=q",set
For example, in the above table if the
WebEdit step is failed then how do we figure out the failure for which object
in the application by just using “name:=q” property. If we have assigned those
properties to a constant which is having an understandable name then it will be
very easy to identify for which object the failure occurs.
So now we have Excel
Keywords and Object Description Constants. We have to write driver script.
Follow the below steps prior to write the driver script.
1.Create
a Folder “KeyWordDrivenSample” in “C:\” drive
o
In
this folder create 3 subfolders with the names “Scripts”, “Constants”,”KeyWords”
2.
Prepare
an excel like how it is available in above table Save the Excel file in
the “C:\KeyWordDrivenSample\KeyWords” folder with the
name “ScriptKeywords.xls”
3.
Copy
above Object Description Constants in a VBS File and save it in the “C:\KeyWordDrivenSample\Coanstants” with
the name “OR Constants.vbs”
4.Open
a new test in QTP and Save the test in “C:\KeyWordDrivenSample\Scripts” Folder
with the name “Driver Script”
Now you should have the Folder structure like specified below
Now you can save the
below script in Driver Script and Run it.
'###################################################################
' Objective :
This is a driver script for Sample Keyword Driven Framework
' Test Case :
Driver Script
' Author :
sds
' Date Created : 01/16/2010
' Date Updated : 01/16/2010
'###################################################################
'##############Initialize Variables and Load
Libraries#############################
ExecuteFile "..\..\Costants\OR Constants.vbs"
'#####################Driver Script
######################################
'Add a new sheet and import keywords
Set
dtKeyWords=DataTable.AddSheet("Keywords")
Datatable.ImportSheet "..\..\Keywords\ScriptKeywords.xls","Sheet1","Keywords"
'Get Row Count and Column Colunt of the databable
dtRowCount=dtKeyWords.GetRowCount
dtColumnCount=dtKeyWords.GetParameterCount
'Use for lop to get values row by row
For dtRow=1 to dtRowCount
dtKeyWords.SetCurrentRow (dtRow)
strObjClass = DataTable("ObjectClass","Keywords")
strObjProperties = DataTable("ObjectProperties","Keywords")
strOperation = DataTable("Operation","Keywords")
strValue = DataTable("Value","Keywords")
If strOperation="SetParent" Then
oParentObjectArray=Split(strObjClass,"/")
oParentObjectPropArray=Split(strObjProperties,"/")
For iParentCount=0 to
ubound(oParentObjectArray)
iParent=oParentObjectArray(iParentCount)
iParentProps=oParentObjectPropArray(iParentCount)
If
iParentCount=ubound(oParentObjectArray) Then
strParent=strParent&iParent&"("&""""&eval(iParentProps)&""""&")"
Exit For
End If
strParent=strParent&iParent&"("&""""&eval(iParentProps)&""""&")."
Next
ParentObject=strParent
Else
oStatement=ParentObject&"."&strObjClass&"("&""""&
eval(strObjProperties) &""""& ")."& strOperation
If strValue<>"" Then
iStrInputDataArray=split(strValue,",")
For iInputValuesCount=0 to
UBound(iStrInputDataArray)
If
iInputValuesCount=UBound(iStrInputDataArray) Then
oStatement=oStatement&" "&""""&
iStrInputDataArray(iInputValuesCount) &""""
Exit for
End If
oStatement=oStatement&" "&""""&
iStrInputDataArray(iInputValuesCount) &""""&","
Next
End If
Execute (oStatement)
End If
Next
'###################################################################
Note: I have given this
as a sample. As of now it only works with Test Objects.
_______________________________________
Please send your Suggestions and Doubt at riterac@gmail.com
_______________________________________
Please send your Suggestions and Doubt at riterac@gmail.com
No comments:
Post a Comment