51Testing软件测试论坛

标题: 来之 陈能济 主编的QTP自动化测试中一段脚本,请高人帮助理解一下 [打印本页]

作者: jf_test    时间: 2009-7-28 10:38
标题: 来之 陈能济 主编的QTP自动化测试中一段脚本,请高人帮助理解一下
'正则表达式在QTP中的应用,通过使用以下的代码重写WinList控件的Select方法来实现
Function SelectRegExp(Obj,patrn,Button,Offset)
     Dim NumOfItems,i, CurrentValue, regEx, ItemToSelect, oldFilter
     Set regEx = New RegExp           '初始化正则表达式
     regEx.Pattern = patrn
     regEx.IgnoreCase = False         '区分大小写
     oldFilter = Reporter.Filter      '保存默认设置
     Reporter.Filter = 2              ' 仅发送设置  
     ItemToSelect = -1                 '获得测试对象的items count属性
     NumOfItems = obj.GetRoProperty("items count") '为什么需要获得测试对象的items count属性?
'下面这个循环实现的什么功能?
     For i = 0 To NumOfItems-1   
         CurrentValue = obj.GetItem(i)
         If regEx.Test(CurrentValue) Then
            If (ItemToSelect <> -1) Then
                SelectRegExp = -1     ' 表示匹配项不唯一
                Reporter.Filter = oldFilter
                Exit Funtion
             End If      
             ItemToSelect = i
          End If
     Next
     Reporter.Filter = oldFilter   '重置默认设置
     '做出选择的动作
     If(ItemToSelect >= 0) Then
        SelectRegExp = obj.Select(ItemToSelect, Button, Offset)
     Else
        SelectRegExp = -1
     End If
End Function

‘重写WinList控件的Select方法
RegisterUserFunc "WinList", "Select", "SelectRegExp"
Window("Flight Reservation").Dialog("Flights Table").Activate
Window("Flight Reservation").Dialong("Flights Table").WinList("From").Select "15797.*"
作者: intothestorm    时间: 2009-7-28 10:55
标题: 天下代码一大抄啊
遍历list对象中的所有item,并匹配唯一项。
作者: shanxi    时间: 2009-7-28 10:57
标题: 回复 1# 的帖子
还是要保持竞争比较好

给出不同的框架实现,竞争出最优秀的那个

别出本书都一样的写法。
作者: nbkhic    时间: 2009-7-28 11:44
....代码都差不多,遍历而已。
作者: jf_test    时间: 2009-7-28 11:49
标题: 回复 2# 的帖子
oldFilter = Reporter.Filter      '保存默认设置
Reporter.Filter = oldFilter   '重置默认设置
能说 一下上面这两句什么意思吗?
          SelectRegExp = -1     ' 表示匹配项不唯一
为什么要让SelectRegExp 等于-1而不是其他的值呢。

新手可能问的比较初级 见谅

[ 本帖最后由 jf_test 于 2009-7-28 11:50 编辑 ]
作者: intothestorm    时间: 2009-7-28 12:06
编码习惯,出错返回-1。
两个SelectRegExp = -1,第一个表示匹配到多个,第二个表示没有匹配到。
作者: jf_test    时间: 2009-7-28 12:53
标题: 回复 6# 的帖子
感谢!
作者: jf_test    时间: 2009-7-28 17:02
标题: 回复 6# 的帖子
在讨饶一下,ItemToSelect = -1 怎么理解
ItemToSelect 这这段脚本中起到什么作用?
作者: intothestorm    时间: 2009-7-30 10:52
用来储存匹配到的item。
一但匹配到 ItemToSelect = i,(<>-1),此后的loop如果再次匹配到就会直接exit function.

If(ItemToSelect >= 0) Then
这里用来判定是否有item被匹配到。

建议你在code上加个断点,watch关心的变量,自己debug看看。
自己动手才丰衣足食




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2