51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2043|回复: 8
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-7-28 10:38:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
'正则表达式在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.*"
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2009-7-28 10:55:41 | 只看该作者

天下代码一大抄啊

遍历list对象中的所有item,并匹配唯一项。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2009-7-28 10:57:28 | 只看该作者

回复 1# 的帖子

还是要保持竞争比较好

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

别出本书都一样的写法。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2009-7-28 11:44:55 | 只看该作者
....代码都差不多,遍历而已。
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2009-7-28 11:49:01 | 只看该作者

回复 2# 的帖子

oldFilter = Reporter.Filter      '保存默认设置
Reporter.Filter = oldFilter   '重置默认设置
能说 一下上面这两句什么意思吗?
          SelectRegExp = -1     ' 表示匹配项不唯一
为什么要让SelectRegExp 等于-1而不是其他的值呢。

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

[ 本帖最后由 jf_test 于 2009-7-28 11:50 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2009-7-28 12:06:11 | 只看该作者
编码习惯,出错返回-1。
两个SelectRegExp = -1,第一个表示匹配到多个,第二个表示没有匹配到。
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2009-7-28 12:53:25 | 只看该作者

回复 6# 的帖子

感谢!
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2009-7-28 17:02:56 | 只看该作者

回复 6# 的帖子

在讨饶一下,ItemToSelect = -1 怎么理解
ItemToSelect 这这段脚本中起到什么作用?
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2009-7-30 10:52:51 | 只看该作者
用来储存匹配到的item。
一但匹配到 ItemToSelect = i,(<>-1),此后的loop如果再次匹配到就会直接exit function.

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

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

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-26 07:20 , Processed in 0.070698 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表