Knowledge Share

Knowledge is NOT Power IMPLEMENTATION of knowledge is Power!!!
 
HomePortalGalleryCalendarFAQRegisterUsergroupsLog in

Share | 
 

 Descriptive Programming

View previous topic View next topic Go down 
AuthorMessage
Admin
Admin


Posts : 141
Points : 407
Reputation : 0
Join date : 2007-12-29
Location : Chennai

PostSubject: Descriptive Programming   Sat Aug 11, 2012 3:08 pm

Descriptive Programming:




Whenever QTP records any action on any object of an application, it adds some description on how to recognize that object to a repository of objects called object repository. QTP cannot take action on an object until unless its object description is in the Object Repository. But
descriptive programming provides a way to perform action on objects
which are not in Object repository

Object Identification:
To identify an object during the play back of the scripts QTP stores some properties which helps QTP to uniquely identify the object on a page.
Below screen shots shows an example Object repository:
Now to recognize a radio button on a page QTP had added 2 properties the
name of the radio button and the html tag for it. The name the left tree view is the logical name given by QTP for the object. This can be
changed as per the convenience of the person writing the test case. QTP only allows UNIQUE logical name under same level of hierarchy. As we see in the snapshot the two objects in Browser->Page node are “WebTable”
and “testPath”, they cannot have the same logical name. But an object
under some other node can have the same name. Now with the current
repository that we have, we can only write operation on objects which
are in the repository.
Some of the example operations are


Browser("Browser").Page("Page").WebRadioGroup ("testPath").Select "2"
cellData = Browser("Browser").Page("Page").WebTable ("WebTable").GetCellData (1,1)
Browser("Example2").Page("Page").WebEdit("testPath").Set "Test text"

b]How to use Descriptive programming?

There are two ways in which descriptive programming can be used
By creating properties collection object for the description.
By giving the description in form of the string arguments.

By creating properties collection object for the description.
To use this method you need first to create an empty description
Dim obj_Desc ‘Not necessary to declare
Set obj_Desc = Description.Create
Now we have a blank description in “obj_Desc”. Each description has 3 properties “Name”, “Value” and “Regular Expression”.
obj_Desc(“html tag”).value= “INPUT”
When
you use a property name for the first time the property is added to the collection and when you use it again the property is modified. By
default each property that is defined is a regular expression. Suppose if we have the following description

obj_Desc(“html tag”).value= “INPUT”
obj_Desc(“name”).value= “txt.*”
This would mean an object with html tag as INPUT and name starting with txt. Now actually that “.*” was considered as regular expression. So, if you want the property “name” not to be recognized as a regular expression then you need to set the “regularexpression” property as FALSE

obj_Desc(“html tag”).value= “INPUT”
obj_Desc(“name”).value= “txt.*”
obj_Desc(“name”).regularexpression= “txt.*”
This is how of we create a description. Now below is the way we can use it
Browser(“Browser”).Page(“Page”).WebEdit(obj_Desc).set “Test"
When
we say .WebEdit(obj_Desc) we define one more property for our description that was not earlier defined that is it’s a text box (because QTPs WebEdit boxes map to text boxes in a web page).


If
we know that we have more than 1 element with same description on the page then we must define “index” property for the that description

Consider the HTML code given below



Now the html code has two objects with same description. So distinguish between these 2 objects we will use the “index” property. Here is the
description for both the object

For 1st textbox:
obj_Desc(“html tag”).value= “INPUT”

obj_Desc(“name”).value= “txt_Name”
obj_Desc(“index”).value= “0”



[b]




For 2nd textbox:



obj_Desc(“html tag”).value= “INPUT”



obj_Desc(“name”).value= “txt_Name”



obj_Desc(“index”).value= “1”



Consider the HTML Code given below:














]We can use the same description for both the objects and still distinguish between both of them


obj_Desc(“html tag”).value= “INPUT”
obj_Desc(“name”).value= “txt_Name”



When
I want to refer to the textbox then I will use the inside a WebEdit
object and to refer to the radio button I will use the description
object with the WebRadioGroup object.
[/size][/b]







Browser(“Browser”).Page(“Page”).WebEdit(obj_Desc).set “Test” ‘Refers to the text box



Browser(“Browser”).Page(“Page”).WebRadioGroup(obj_Desc).set “Test” ‘Refers to the radio button







But
if we use WebElement object for the description then we must define the
“index” property because for a webelement the current description would
return two objects.








Hierarchy of test description:







When
using programmatic descriptions from a specific point within a test
object hierarchy, you must continue to use programmatic descriptions




from
that point onward within the same statement. If you specify a test
object by its object repository name after other objects in the
hierarchy have




been described using programmatic descriptions, QuickTest cannot identify the object.







For example, you can use Browser(Desc1).Page(Desc1).Link(desc3), since it uses programmatic descriptions throughout the entire test object hierarchy.



You can also use Browser("Index").Page(Desc1).Link(desc3), since it uses programmatic descriptions from a certain point in the description (starting



from the Page object description).







However, you cannot use Browser(Desc1).Page(Desc1).Link("Example1"), since it uses programmatic descriptions for the Browser and Page objects but



then
attempts to use an object repository name for the Link test object
(QuickTest tries to locate the Link object based on its name, but cannot




locate it in the repository because the parent objects were specified using programmatic descriptions).







Getting Child Object:







We
can use description object to get all the objects on the page that
matches that specific description. Suppose we have to check all the
checkboxes present on a web page. So we will first create an object
description for a checkboxe and then get all the checkboxes from the
page








Dim obj_ChkDesc







Set obj_ChkDesc=Description.Create



obj_ChkDesc(“html tag”).value = “INPUT”



obj_ChkDesc(“type”).value = “checkbox”







Dim allCheckboxes, singleCheckBox







Set allCheckboxes = Browse(“Browser”).Page(“Page”).ChildObjects(obj_ChkDesc)







For each singleCheckBox in allCheckboxes







singleCheckBox.Set “ON”







Next







The
above code will check all the check boxes present on the page. To get
all the child objects we need to specify an object description i.e. we
can’t use the string arguments that will be discussed later in the 2nd
way of using the programming description.








Possible Operation on Description Object







Consider the below code for all the solutions



Dim obj_ChkDesc







Set obj_ChkDesc=Description.Create



obj_ChkDesc(“html tag”).value = “INPUT”



obj_ChkDesc(“type”).value = “checkbox”







Q: How to get the no. of description defined in a collection



A: obj_ChkDesc.Count ‘Will return 2 in our case







Q: How to remove a description from the collection



A: obj_ChkDesc.remove “html tag” ‘would delete the html tag property from the collection







Q: How do I check if property exists or not in the collection?



A:
The answer is that it’s not possible. Because whenever we try to access
a property which is not defined its automatically added to the
collection. The only way to determine is to check its value that is
use a if statement “if obj_ChkDesc(“html tag”).value = empty then”.








Q: How to browse through all the properties of a properties collection?



A: Two ways



1st:



For each desc in obj_ChkDesc



Name=desc.Name



Value=desc.Value



RE = desc.regularexpression



Next



2nd:



For i=0 to obj_ChkDesc.count - 1



Name= obj_ChkDesc(i).Name



Value= obj_ChkDesc(i).Value



RE = obj_ChkDesc(i).regularexpression



Next







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







You can describe an object directly in a statement by specifying property:=value pairs describing the object instead of specifying an object’s



name. The general syntax is:







TestObject("PropertyName1:=PropertyValue1", "..." , "PropertyNameX:=PropertyValueX")







TestObject—the test object class could be WebEdit, WebRadioGroup etc….







PropertyName:=PropertyValue—the test object property and its value. Each property:=value pair should be separated by commas and quotation



marks.
Note that you can enter a variable name as the property value if you
want to find an object based on property values you retrieve during a
run session.








Consider the HTML Code given below:



















Now to refer to the textbox the statement would be as given below







Browser(“Browser”).Page(“Page”).WebEdit(“Name:=txt_Name”,”html tag:=INPUT”).set “Test”







And to refer to the radio button the statement would be as given below







Browser(“Browser”).Page(“Page”).WebRadioGroup(“Name:=txt_Name”,”html tag:=INPUT”).set “Test”







If we refer to them as a web element then we will have to distinguish between the 2 using the index property







Browser(“Browser”).Page(“Page”).WebElement(“Name:=txt_Name”,”html tag:=INPUT”,”Index:=0”).set “Test” ‘ Refers to the textbox



Browser(“Browser”).Page(“Page”).WebElement(“Name:=txt_Name”,”html tag:=INPUT”,”Index:=1”).set “Test” ‘ Refers to the radio button
Back to top Go down
http://knowledgeshare.forumotion.com
 
Descriptive Programming
View previous topic View next topic Back to top 
Page 1 of 1
 Similar topics
-
» Descriptivce Programming(Similar to VBS in QTP) in webdriver.
» up to what extent do we have to know a programming language for selenium
» Java Programming - JCreator

Permissions in this forum:You cannot reply to topics in this forum
Knowledge Share :: Testing :: Automation-
Jump to: