隐形人 发表于 2009-1-4 18:46:50

BS页面上弹出的dialog的描述性编程实现

BS架构,弹出的网页对话框有如下图两种,一种dialog中出现的提示信息有两行,一种是只有一行,用QTP的SPY分别去获取相关的信息可知:对于提示信息只有一行的,对象的TEXT属性值就等于提示信息,但是对于提示信息为两行的,对象的TEXT属性值为“<multi-line> value”,具体情况如图
我用描述性编程来实现对两个dialog是否存在进行判断
分别为:
提示信息只有一行的:
If Browser("TITLE:=中国电信安徽分公司客户关系管理系统 V4.8").Dialog("TEXT:=Microsoft Internet Explorer").Static("TEXT:=该客户已有客户密码,但未签订密码协议,请提示让客户签证密码协议!").EXIST Then
MSGBOX 1
   ELSE
      MSGBOX 2
End If
表明上述的对象存在
提示信息有两行的:
If Browser("title:=安徽电信客户关系管理系统").Dialog("text:=Microsoft Internet Explorer").Static("text:=请先关闭登录界面!然后重新打开IE登录!").exist Then
        msgbox 123
End If
表明上述对象不存在,请问问题到底是出在哪里,如何实现对有两行提示信息的DIALOG的判断?

asoqa 发表于 2009-1-4 20:34:41

问题在于你用的是描述性编程
这一句:Static("text:=请先关闭登录界面!然后重新打开IE登录!")
已经有两行文案了,这里还用一行去匹配,肯定匹配不到。加个回车符,你再试试。

ttyer 发表于 2009-1-5 04:19:22

方法①:

If Browser("micClass:=Browser").Dialog("text:=Microsoft Internet Explorer").Exist(0) Then
        wait 1
        str = Browser("micClass:=Browser").Dialog("text:=Microsoft Internet Explorer").GetVisibleText
        MyArray = Split(str,vbcrlf , -1, 1)
        msgbox MyArray(1)
        If Replace(MyArray(1)," ","")="XXXXX" then
                Browser("micClass:=Browser").Dialog("text:=Microsoft Internet Explorer").WinButton("text:=确定").Click
        end if
End If

方法②:
If Browser("micClass:=Browser").Dialog("text:=Microsoft Internet Explorer").Exist(0) Then
        wait 1
        msgbox Browser("micClass:=Browser").Dialog("text:=Microsoft Internet Explorer").Static("window id:=65535").GetROProperty("regexpwndtitle")
End If

隐形人 发表于 2009-1-6 11:52:26

谢谢asoqa和ttyer的回答,这里的确是因为回车符的问题,这里要写成Browser("title:=安徽电信客户关系管理系统").Dialog("text:=Microsoft Internet Explorer").Static("text:=请先关闭登录界面!"&chr(10)&chr(10)&"然后重新打开IE登录!")就可以了
页: [1]
查看完整版本: BS页面上弹出的dialog的描述性编程实现