在
QTP
中自定义测试对象
WinList
的
Select
方法,支持正则表达式和多选,类似的思想可以扩展到其他的
list
类型的控件。
下面的脚本摘自
QTP
的
CodeSamplesPlus
:
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
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")