gaohui 发表于 2009-8-19 17:30:38

使用描述性语言,属性值中带有括号,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:46

LZ可以去QTP的帮助文档中查看下哪些字符是被正则表达式认为是特殊字符, 由于QTP描述性编程默认是启用正则表达式的,所以属性值中的特殊字符都需要用\来转义.
帮助中相关内容的位置在Contents >HP QuickTest Professional User's Guide > Enhancing Tests > Configuring Values > Defining Regular Expressions
当然也可以在执行该语句前先将禁用对该对象属性启用正则表达式,以前我也都介绍过的,不再啰嗦了

vernzhang1980 发表于 2009-8-19 17:57:34

试下这个吧:
JavaWindow("title:=窗口","displayed:=1").JavaButton("关闭\(C\)").Click

wshyzhywx 发表于 2009-8-19 21:16:05

父对象用了描述性编程子对象没用..

gaohui 发表于 2009-8-20 19:50:30

谢谢各位!~~
哈哈,可以了!原来需要正则表达式转换!
我好土哦。。。O(∩_∩)O哈哈~
页: [1]
查看完整版本: 使用描述性语言,属性值中带有括号,qtp无法识别??