Search code examples
vbscriptqtphp-uft

QTP Descriptive Programmuing -Loading the objects created through function


I have 10 different test cases .I want to create different objects of SwfEdit, SwfButton etc just once say in function and then use those in different actions in QTP.

I tried creating a function and linked it to a test case,however it did not work. So I am not sure what could be correct way to link all these objects across all the test cases.


Solution

  • If you insist on creating your objects in code instead of using the object repository, you'll need to store those objects in some type of global variable. A basic example might be for a function library:

    ' Declare your global variable to hold the object
    Public MyObject
    
    ' Create your object from a function
    Public Sub InitializeGlobalObject()
    
        ' Use Descriptive Programing to create your object
        Set MyObject = Window("title:=something").Button("index:=0")
    
    End Sub
    

    This will allow you to create the object once and then refer to it by the variable

    ' Click the button
    MyObject.Click
    

    You may run into issues caching an object like this because it will tend to hold on to the last screen object that it matches, whereas the object repository will refresh the screen object each time you call it. You may need to call the 'Refresh' method on your object before you use it for the first time after it is displayed on the screen.