51Testing软件测试论坛

标题: 使用描述性语言,属性值中带有括号,qtp无法识别?? [打印本页]

作者: gaohui    时间: 2009-8-19 17:30
标题: 使用描述性语言,属性值中带有括号,qtp无法识别??
按钮的截图见附件
使用spy抓取到的按钮的label值为"刷新(F)"、"关闭(C)"、"帮助(H)"
但是,使用JavaWindow("title:=窗口","displayed:=1").JavaButton("label:=关闭(C)").Click 总是报错,JavaButton对象不能识别
但是,如果修改成JavaWindow("title:=窗口","displayed:=1").JavaButton("label:=关闭.*").Click 却是可行的。
上面还可以使用.*混过去,但是有个需求,是JavaWindow右键菜单JavaMenu的所有名称,然后,在依次打开每个JavaMenu菜单。

写了一个function,
        Set Desc = Description.Create()
        Desc("to_class").Value = "JavaMenu"
        Desc("enabled").Value = "1"
        Desc("displayed").Value = "1"
        wait (1)
        set subMenuObj = JavaWindow("title:=窗口","displayed:=1").ChildObjects(Desc)
         subMenuNum = subMenuObj.Count
        For i = 0 To subMenuNum - 1
        subStr = subMenuObj(i).getROProperty("label")
        Set ZxFindJavaMenuObj = JavaWindow("title:=窗口","displayed:=1").JavaMenu("label:=" & Trim(subStr))
         ZxFindJavaMenuObj.select
        Next
如果subStr包含(),就无法识别,无法打开,其他的值都可以,中文,英文,小数点,/,数字等都试过了

是不是括号需要转义,我把它转成asc码,也无法识别,JavaWindow("title:=窗口","displayed:=1").JavaMenu("label:=菜单" &chr(40)&"C"&chr(41))
请问高手们,如何解决啊,谢谢大家了~~~

[ 本帖最后由 gaohui 于 2009-8-20 09:05 编辑 ]
作者: hsjzfling    时间: 2009-8-19 17:53
LZ可以去QTP的帮助文档中查看下哪些字符是被正则表达式认为是特殊字符, 由于QTP描述性编程默认是启用正则表达式的,所以属性值中的特殊字符都需要用\来转义.
帮助中相关内容的位置在Contents >HP QuickTest Professional User's Guide > Enhancing Tests > Configuring Values > Defining Regular Expressions
当然也可以在执行该语句前先将禁用对该对象属性启用正则表达式,以前我也都介绍过的,不再啰嗦了
作者: vernzhang1980    时间: 2009-8-19 17:57
试下这个吧:
JavaWindow("title:=窗口","displayed:=1").JavaButton("关闭\(C\)").Click
作者: wshyzhywx    时间: 2009-8-19 21:16
父对象用了描述性编程  子对象没用..
作者: gaohui    时间: 2009-8-20 19:50
谢谢各位!~~
哈哈,可以了!原来需要正则表达式转换!
我好土哦。。。O(∩_∩)O哈哈~




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