51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

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

[原创] 描述性编程中,正则表达式使用的问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-3-24 17:40:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
if ehome.image("outerhtml:=<IMG src=(.)*+Images\/mood\/+"&DataTable("diary_xq", dtGlobalSheet)&".gif+(.)*").exist then
      Reporter.ReportEvent micPass, "日记天气正确",  "Pass"
Else
     Reporter.ReportEvent micFail, "日记天气不正确", "Fail"
End If


问题描述:
如上面代码的检查点.

我需要使用正则表达式检查一个图片的outerhtml属性,属性值的格式为<IMG src="http://file.ehome.cn/Images/mood/[1-6].gif">
但是我上面代码设置的正则表达式却是错误的.

所以我的问题就是:
1,<IMG src="http://file.ehome.cn/Images/mood/[1-6].gif">这样的格式的正则表达式在描述性编程中,应该如何表达.
   如果觉得太难的话,就表达http://file.ehome.cn/Images/mood/[1-6]。gif
注意:我要参数化的是红色字体部分的内容,

[ 本帖最后由 onlonely 于 2009-3-24 20:08 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2009-3-24 20:48:31 | 只看该作者
(1)Set checkimage=description.create()
      checkimage("outerhtml").value="\<IMG src=\"http:\/\/file.ehome.cn\/Images\/mood\/[1-6].gif\"、>"
      checkimage("outerhtml").RegularExpression = True

(2)或者QTP帮助里面有这个函数,看是否能帮到你。

Function RegExpTest(patrn, strng)
   Dim regEx, Match, Matches   ' Create variable.
   Set regEx = New RegExp   ' Create a regular expression.
   regEx.Pattern = patrn   ' Set pattern.
   regEx.IgnoreCase = True   ' Set case insensitivity.
   regEx.Global = True   ' Set global applicability.
   Set Matches = regEx.Execute(strng)   ' Execute search.
   For Each Match in Matches   ' Iterate Matches collection.
      RetStr = RetStr & "Match found at position "
      RetStr = RetStr & Match.FirstIndex & ". Match Value is '"
      RetStr = RetStr & Match.Value & "'." & vbCRLF
   Next
   RegExpTest = RetStr
End Function
MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4"))
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2009-3-24 21:40:41 | 只看该作者
(1)Set checkimage=description.create()
      checkimage("outerhtml").value="\<IMG src=\"http:\/\/file.ehome.cn\/Images\/mood\/[1-6].gif\"、>"
      checkimage("outerhtml").RegularExpression = True

(2)或者QTP帮助里面有这个函数,看是否能帮到你。

Function RegExpTest(patrn, strng)
   Dim regEx, Match, Matches   ' Create variable.
   Set regEx = New RegExp   ' Create a regular expression.
   regEx.Pattern = patrn   ' Set pattern.
   regEx.IgnoreCase = True   ' Set case insensitivity.
   regEx.Global = True   ' Set global applicability.
   Set Matches = regEx.Execute(strng)   ' Execute search.
   For Each Match in Matches   ' Iterate Matches collection.
      RetStr = RetStr & "Match found at position "
      RetStr = RetStr & Match.FirstIndex & ". Match Value is '"
      RetStr = RetStr & Match.Value & "'." & vbCRLF
   Next
   RegExpTest = RetStr
End Function
MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4"))


第一种方法我先前都试过了双引号无法通过斜杠来转译.
至于后面这种方法....不是很理解含义,汗
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2009-3-25 10:33:00 | 只看该作者

回复 1# 的帖子

1) /是不需要被转义的,而需要被转义的是 .
2) "不能被\转义,一般可以用Chr(34)来代替,当然你也可以用.来代替
3) outerhtml:=<IMG src=(.)*+Images\/mood\/+"&DataTable("diary_xq", dtGlobalSheet)&".gif+(.)*"这段表达式中所有的+都是没有任何意义的。。。
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2009-3-25 11:20:24 | 只看该作者

回复 4# 的帖子

其实在这里面仔细琢磨正则表达式的这么复杂应用走入误区了.
set xq = Description.Create()
xq("outerhtml").Value = "http://file.ehome.cn/Images/mood/"&DataTable("diary_bq", dtGlobalSheet)&".gif"
xq("outerhtml").RegularExpression = False
objectname.image(xq).exist


如上面这样的代码处理(取消正则表达式,用变量代替变化的地方)更简便实用.

[ 本帖最后由 onlonely 于 2009-3-25 11:34 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2009-3-25 16:46:50 | 只看该作者

回复 5# 的帖子

LZ的标题就是正则表达式的使用问题。。。
在实际运用中究竟采用哪种方式是要根据具体的情况而定,在你能确切知道变化的值的情况下,用变量来替换当然是可以;但如果你不能知道实际值,那还是得用正则表达式

不用太多琢磨,把关于正则表达式的帮助大致上看一遍就能基本了解,花不了多少分钟。
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2009-3-26 11:54:02 | 只看该作者
lz用什么是什么版本的,如果低于9.0 ,建议在描述编程中不要使用正则,以前的版本QTP本身就有问题
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2009-3-26 12:02:47 | 只看该作者
如果只看图片的编号是否正确,把
ehome.image("outerhtml:=<IMG src=(.)*+Images\/mood\/+"&DataTable("diary_xq", dtGlobalSheet)&".gif+(.)*").exist
改成:
ehome.image("outerhtml:=(.)*"&num&".gif$").exist  就行了
回复 支持 反对

使用道具 举报

该用户从未签到

9#
 楼主| 发表于 2009-3-26 15:33:39 | 只看该作者

回复 8# 的帖子

问题我是通过取消正则表达式判断这个方法解决了.
不过你这样是不行的,ehome.image("outerhtml:=(.)*"&num&".gif$").exist  
因为Images/mood/这段文字是必须加入判断的,因为图片路径很重要,不只要判断图片是否正确
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-15 15:55 , Processed in 0.072648 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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