Quantcast
Channel: Test Automation
Viewing all articles
Browse latest Browse all 19

QTP: Getting the properties of childobjects

$
0
0
I've been doing a lot of work with childobjects, and one of the issues I've faced when working with the returned collection is determining what runtime properties each object in the collection has. Once you know what properties the object has, it makes it easier to filter your childobject descriptions or choose the right object in the collection to work with.

Unfortunately QTP has lousy debug capabilities in this area so I started researching ways in which you can display the properties of QTP objects and I came across this useful post.

I tweaked this a little bit to produce a function that prints out all of the object properties to the debug window. When combined with some code to iterate the childobjects you can quickly see what all the properties are. This has been tested with QTP 11.

The code

First of all, here's the function to print out all of the object properties

Sub PrintObjectProperties(objQTPObject)
'This article helped with this function:
'http://motevich.blogspot.com/2008/11/qtp-object-indentification-properties.html
Const HKEY_LOCAL_MACHINE = &H80000002
Dim objReg, strKeyPath
Dim arrObjectProperties, i


Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
strKeyPath = "SOFTWARE\Mercury Interactive\QuickTest Professional\MicTest\Test Objects\"& objQTPObject.GetROProperty("micclass") & "\Properties"
objReg.EnumValues HKEY_LOCAL_MACHINE, strKeyPath, arrObjectProperties

'now we've got an array of the properties, output all of the runtime properties
Print objQTPObject.ToString
Print "micclass:"& objQTPObject.GetROProperty("micclass")

If IsNull(arrObjectProperties) Then
Print "** Object RO Properties could not be found for this class**"
Else
For i = 0 to UBound(arrObjectProperties)
Print arrObjectProperties(i) & ":"& objQTPObject.GetROProperty(arrObjectProperties(i))
Next
End If

End Sub

Then combine with some code that retrieves a collection of childobjects from a QTP object:

Dim objDesc,objDescCol
Dim objQTPObject
Dim n

Set objQTPObject = Browser("A").Page("B")
Set objDesc = Description.Create
'Add any other description filters here
Set objDescCol = objQTPObject.ChildObjects(objDesc)

If objDescCol.count > 0 Then
For n = 0 to (objDescCol.count-1)
Print "Child Object "& n
Call PrintObjectProperties(objDescCol(n))
Print ""
Next
End If

The result is that all of the properties of the children are output to the print window.

Viewing all articles
Browse latest Browse all 19

Trending Articles