本文共 1584 字,大约阅读时间需要 5 分钟。
在 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")
转载地址:http://krjli.baihongyu.com/