Registering User-Defined Functions as Test Object Methods

The two functions below illustrate how you can enhance your Test Object Model by either replacing existing test object methods with new ones or by adding new methods to existing test objects. The following example can be found in the UserDefineFunction.vbs and UserDefineFunction.py files located in the <Installdir>\CodeSamplesPlus folder.

VBScript sample

Copy code
Function SelectRegExp(Obj, patrn, Button, Offset)
    dim NumOfItems, i, CurrentValue, regEx, ItemToSelect, oldFilter
' Initialize the regular expression object with the pattern
    Set regEx = New RegExp
    regEx.Pattern = patrn
    regEx.IgnoreCase = False

    oldFilter = Reporter.Filter ' save the default setting
    Reporter.Filter = 2 ' Send only errors
    ItemToSelect = -1
    ' Retrieve the number of items in the list
    NumOfItems = obj.GetROProperty("items count")
    For i=0 to NumOfItems-1
        CurrentValue = obj.GetItem(i)
        If regEx.Test(CurrentValue) Then
            If (ItemToSelect <> -1) Then
                SelectRegExp = -1 ' item not unique
                Reporter.Filter = oldFilter
                Exit Function
            End If
            ItemToSelect = i
        End If
    Next
    Reporter.Filter = oldFilter ' Restore the default setting
    ' The actual selection
    If (ItemToSelect >= 0) Then
        SelectRegExp = obj.Select(ItemToSelect, Button, Offset)
    Else
        SelectRegExp = -1
    End If
End Function

Function SelectItems(Obj, items)
    Dim idx, item
    If (StrComp(obj.GetROProperty("type"), "select-multiple", 1) = 0) Then
        For Each item In items
            obj.Select(item)
        Next
    Else
        obj.Select(items(0))
    End If
End Function

' Override the Select function of the WinList object
RegisterUserFunc "WinList", "Select", "SelectRegExp"

' Or add the SelectRegExp function to the WinList object
RegisterUserFunc "WinList", "SelectRegExp", "SelectRegExp"
RegisterUserFunc "WinList", "SelectItems", "SelectItems"

' Example of usage:
WinList("mylist").Select "2002.*"
WinList("mylist").SelectItems Array("item1", "item3", "item6")

Python sample

Copy code
'''
Description overrides the default set method with my_Set method
'''

def my_set(test_object, a):
    print("Executing the reg func")
    WpfWindow("OpenText MyFlight Sample").WpfEdit("agentName").Type(a)
    Reporter.ReportNote("This function 'my_set', is generated using Function Definition Generator")


RegisterUserFunc("WpfEdit", "Set", "my_set")

WpfWindow("OpenText MyFlight Sample").WpfEdit("agentName").Set("john")
WpfWindow("OpenText MyFlight Sample").WpfEdit("password").SetSecure("69ca4dec4b078525ba23")
WpfWindow("OpenText MyFlight Sample").WpfButton("OK").Click()
WpfWindow("OpenText MyFlight Sample").Close()