Registering User-Defined Functions as Test Object Methods

The two functions below illustrate how you can enhance the QuickTest Test Object Model by either replacing existing test object methods with new ones or by adding new methods to existing test objects.

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")

No comments: