51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4632|回复: 6
打印 上一主题 下一主题

[原创] QTP描述性编程中正则表达式的应用

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-8-28 08:12:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
与大家分享下在QTP的描述性编程中关于正则表达式的应用
  一、正则表达式直接用于对象的描述
  实例: 客户站点的browser的识别。
  它有时是这样一种形式 Browser("title:=Harry potter | ISBN ...")
  有时如果title太长的话,它又是这样一种形式 Browser("title:=I love you and you love me / love series ....")
  为了写出的代码能够对两种情况全部适用,能够不管哪种情况都能将browser识别出来,我采用了正则表达式,首先用title的前面部分参数化,前面相当于是书名,这个是给定的测试数据,可以从数据表中得到,命名为strTitle, 后面就用到正则表式了写成如下形式:
  Browser("title:=" & strTitle & ".*" & "|.*ISBN.*")
  举个实例这个字串相当于是:"Harry potter.*|.*ISBN.*", .可以代表除换行外任意字符,*表示重复任意次,|是分隔符用来表示两种匹配均可也就是如上两种情况的browser均可被识别,不管它的title是长还是短。
  二、正则表达式用于Description的定义
  实例:如何将页面中类似于这样的一些link找出来: 1. Harry potter, 2. I love you, 3. Thank you, 4. Hello...
  这种时候用上两个技术:一个是Description, 一个是ChildObjects方法
  代码如下:
  Set bjDesc=Description.Create() '声明一个Description对象
  objDesc("micclass").value="Link" '定义这个Descriptio对象的micclass的属性为link
  objDesc("text").value="^\d+\..*$" '这一句就用上了正则表达式,先解释一下各个符号的意思, ^匹配字符串开始,\d匹配任意数字,+前面的字符重复至少一次,\.因为点在正则表达式是有意义的,而\.就表示点本身,.匹配除换行外任意字符,*表示重复任意次, 那么这个正则表达式其实就是匹配以上据说的那些link的形式。
  Set arrLink=Browser("Title:=search result").page("Title:=search result").ChildObjects(objDesc) 'ChildObjects方法返回的是子对象数组,这里是将符合Description定义的那些了对象返回,那些我需要的link就全部找到了。
  以上就是我对于正则表达式的两点应用,相信还有很多地方可以使用它,还有很多灵活的用法,就靠大家自己在实际应用中去挖掘。

Trackback: http://bbs.qtpfuns.com/read.php?tid=587
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2010-8-28 10:34:08 | 只看该作者
学习了
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2015-10-19 13:26
  • 签到天数: 2 天

    连续签到: 2 天

    [LV.1]测试小兵

    3#
    发表于 2010-8-29 19:33:50 | 只看该作者
    呵呵,我一般对象id太长,就用.*objId的格式,别的还没怎么研究
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2010-8-30 11:00:50 | 只看该作者
    拜读了,谢谢楼主的分享!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
    发表于 2010-9-2 09:35:55 | 只看该作者
    这两点确实挺长用~总结的很好噶~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
    发表于 2011-7-12 19:30:38 | 只看该作者
    学习了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2012-8-29 12:40:31 | 只看该作者
    请问如果title属性为"add\Tocart", 因为/会被正则认为特殊字符,所以需要转义下写成"title:=add\\Tocart", 有没有哪个语句是直接关闭正则敏感,自动的认为\就是个普通字符, 这样我就不需要转义了
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-27 23:22 , Processed in 0.083763 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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