Secret Methods of QTP Objects
Posted by admin - Sep 4, 2008 Articles, Yaron Assa 4 3 Views : 3417 Receive Updates For This Category
Article Tools
- Print this page
- Add Comment
- Send to Friend
- Last Updated on :
Jul 15, 2011
I’ve been doing some digging into QTP’s test-objects, hoping to find some undocumented methods and techniques. Armed with the power of PDM.DLL, I’ve explored each test object, and have come up with these interesting results, all of which don’t show up on your regular intellisense autocomplete.
As this is still a work in process, the function of many methods is still unclear. I’ve set up a color coding system to make things more clear – Red = Don’t have a clue. Black = Have a pretty good idea / an educated guess. Green = Presumably know exactly what the method is supposed to do.
If any of you know the purpose and function of these methods, please fill me in by dropping a comment, and I’ll update the article.
Update: mayno224 has informed us that a Java object MethodWizard method will open a window with all the object’s internal methods (similar to the .Net form’s spy).
All Objects
All QTP test objects have these five methods in common:
1. Highlight – Highlights the object, much like the highlight feature in the object-repository.
2. QueryValue(Property, PropertyData), GetProperty(Property, pFlags, pType, pParameterName) and SetProperty(Property, Value, pFlags, pType, pParameterName)– I haven’t been able to figure out what these method do. If any of you manage to crack this up, I would appreciate it if you dropped a comment.
3. ToString – Returns a string representation of the object. Usually it’s just the name.
4. Init – As described here, re-links the test-object to the runtime object. Especially useful in a web environment, after a page refresh.
Web
All Objects:
|
Method |
Description |
| .MakeObjVisible | Scrolls the object into view (if needed). Similar to the documented .MakeVisible method for ActiveX objects |
Browser:
|
Method |
Description |
| .AddCookie(Domain, Cookies) .GetCookies(Url, Cookies) |
Probably syntactically sets / gets cookie data. |
| .RefreshWebSupport | Perhaps the underlying method behind the visible .Refresh method? |
| .SubmitForm(bstrUrl, bstrTargetFrame, bstrPostData, bstrHeaders) | Submit forms “hardcore” style. |
Page:
|
Method |
Description |
| .RefreshObjects | Probably performs .Init on all its childobjects. |
| .StartTransaction(Name) .EndTransaction(Name, Status) .SetTransactionStatus(Status) |
Don’t have a clue. |
| .SaveLayout(pDoc) .RestoreLayout(elemTag, elemID, propName, propValue) |
Presumably saves/restores the visible layout of the page. |
All other web objects (WebElement, WebList, WebButton, etc.):
|
Method |
Description |
| .Submit | Presumably submits a form, if activated on the relevant object |
| .MouseOver | Similar to firing the OnMouseOver event. |
Standard Windows
All Objects:
|
Method |
Description |
| ClickOnText(TextToFind, Left, Top, Right, Bottom, MatchWholeWordOnly, BUTTON, DoubleClick) | Extremely useful method! A merge between .GetTextLocation and .Click: It finds the specified text within the object, and clicksAll the parameters are self-explanatory. BUTTON is the button code (look under the click method in QTP help); and DoubleClick is boolean. |
WinEdit:
|
Method |
Description |
| .SetText | Seems to be exactly like the regular .Set method. However, Neither function uses the other (checked with RegisterUserFunc) |
WinButton:
|
Method |
Description |
| .Press | Seems to be exactly like the regular .Click method. However, Neither function uses the other (checked with RegisterUserFunc) |
WinMenu:
|
Method |
Description |
| .PrepareMenu(phSubMenu, peMenuObjectType) | Perhaps has something to do with loading the sub-menu items for a given menu option. |
.Net (SWF objects)
All Objects:
|
Method |
Description |
| ClickOnText(TextToFind, Left, Top, Right, Bottom, MatchWholeWordOnly, BUTTON, DoubleClick) | Same as in Standard Windows. |
| Spy | Launches the .Net form spy for the relevant object. Perfect for objects you cannot get your mouse to point to. |
| CreateManagedObject(bsType, bsFile, pVal) | Have no idea. |
SwfTable:
|
Method |
Description |
| GetCellCoord(Row, Column, X, Y) | Probably the underlying method behind ClickCell. Should return the cell coordinates though the ByRef X,Y variables, but keeps spitting out an error (Perhaps the variables have to be cased into long integers?). |
SwfButton:
|
Method |
Description |
| .Press | Seems to be exactly like the regular .Click method. However, Neither function uses the other (checked with RegisterUserFuc) |
.Java
All Objects:
|
Method |
Description |
| InvokeMethod(MethodName, MethodArguments) | My guess is it calls an inner method of the object. |
| MethodWizard() | Thanks to Mayno224: Will present a screen with all the object’s internal methods. Kinda similar to .Net objects Spy. |
| RequestFocus() | Presumably brings the object into focus. |
| ClickOnText(TextToFind, Left, Top, Right, Bottom, MatchWholeWordOnly, BUTTON, DoubleClick) | Same as in Standard Windows. |
Other environments and updates will be published when I’ve completed my investigation, and when reads will drop in more information through comments.



Johan Tejle
Dec 06, 2011
Nice start
Alexey
Nov 24, 2011
GetProperty(Property, pFlags, pType, pParameterName)
Gets property in according with xml object represenation. For example:
1) create new test
2) create there an text checkpoint in Local OR
3) export local OR into xml
4) look in xml for your text property tag name
Real work example:
‘firing obj.Check Checkpoint(…)
‘@Verify Checkpoint object
‘if checkpoint is “text area” then modifies coords of check screen to the whole object (to avoid different screen resolutions issues)
Function CheckEx(obj, Verify)
Dim chkType
Dim width, height
chkType = Verify.GetProperty(“step_type”)
If StrComp(chkType, “Text Area Checkpoint”, 1)=0 Then
width = obj.GetROProperty(“width”)
height = obj.GetROProperty(“height”)
Verify.SetProperty “text_area_y2″, height
Verify.SetProperty “text_area_y1″, 0
Verify.SetProperty “text_area_x2″, width
Verify.SetProperty “text_area_x1″, 0
End If
CheckEx = obj.Check(Verify)
End Function
RegisterUserFunc “PbWindow”, “Check”, “CheckEx”
RegisterUserFunc “PbDataWindow”, “Check”, “CheckEx”
ujas_doshi
Sep 07, 2011
Services.StartTransaction(“login”)
‘start of logic for login
‘some processing
‘and steps
‘and checkpoints
Services.EndTransaction(“login”,Pass)
‘End of logic for login
Doing this will display similarly in results with the time it took to perform login action or transaction
Here, “login” is the name we give.
Amonauto
Oct 08, 2011
Nice one