描述性编程中,正则表达式使用的问题
if ehome.image("outerhtml:=<IMG src=(.)*+Images\/mood\/+"&DataTable("diary_xq", dtGlobalSheet)&".gif+(.)*").exist thenReporter.ReportEvent micPass, "日记天气正确","Pass"
Else
Reporter.ReportEvent micFail, "日记天气不正确", "Fail"
End If
问题描述:
如上面代码的检查点.
我需要使用正则表达式检查一个图片的outerhtml属性,属性值的格式为<IMG src="http://file.ehome.cn/Images/mood/.gif">
但是我上面代码设置的正则表达式却是错误的.
所以我的问题就是:
1,像<IMG src="http://file.ehome.cn/Images/mood/.gif">这样的格式的正则表达式在描述性编程中,应该如何表达.
如果觉得太难的话,就表达http://file.ehome.cn/Images/mood/。gif
注意:我要参数化的是红色字体部分的内容,
[ 本帖最后由 onlonely 于 2009-3-24 20:08 编辑 ] (1)Set checkimage=description.create()
checkimage("outerhtml").value="\<IMG src=\"http:\/\/file.ehome.cn\/Images\/mood\/.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")) (1)Set checkimage=description.create()
checkimage("outerhtml").value="\<IMG src=\"http:\/\/file.ehome.cn\/Images\/mood\/.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"))
第一种方法我先前都试过了双引号无法通过斜杠来转译.
至于后面这种方法....不是很理解含义,汗
回复 1# 的帖子
1) /是不需要被转义的,而需要被转义的是 .2) "不能被\转义,一般可以用Chr(34)来代替,当然你也可以用.来代替
3) outerhtml:=<IMG src=(.)*+Images\/mood\/+"&DataTable("diary_xq", dtGlobalSheet)&".gif+(.)*"这段表达式中所有的+都是没有任何意义的。。。
回复 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 编辑 ]
回复 5# 的帖子
LZ的标题就是正则表达式的使用问题。。。在实际运用中究竟采用哪种方式是要根据具体的情况而定,在你能确切知道变化的值的情况下,用变量来替换当然是可以;但如果你不能知道实际值,那还是得用正则表达式:victory:
不用太多琢磨,把关于正则表达式的帮助大致上看一遍就能基本了解,花不了多少分钟。 lz用什么是什么版本的,如果低于9.0 ,建议在描述编程中不要使用正则,以前的版本QTP本身就有问题 如果只看图片的编号是否正确,把
ehome.image("outerhtml:=<IMG src=(.)*+Images\/mood\/+"&DataTable("diary_xq", dtGlobalSheet)&".gif+(.)*").exist
改成:
ehome.image("outerhtml:=(.)*"&num&".gif$").exist就行了
回复 8# 的帖子
问题我是通过取消正则表达式判断这个方法解决了.不过你这样是不行的,ehome.image("outerhtml:=(.)*"&num&".gif$").exist
因为Images/mood/这段文字是必须加入判断的,因为图片路径很重要,不只要判断图片是否正确
页:
[1]