51Testing软件测试论坛

标题: web弹出框与描述性编程的那些事 [打印本页]

作者: mao303mao    时间: 2010-8-2 21:23
标题: web弹出框与描述性编程的那些事
web弹出框与描述性编程的那些事
此乃小弟初学QTP的愚见,望各位大大多多指教。
在web应用程序中,有许多验证点是与弹出框提示相关的,如下面的这个例子:
页面只有两个输入框A、B,两者都有输入范围,超过输入范围点“保存”就有相应的弹出对话框提示,于是有以下三个反例:
1、 只有输入框A超过输入范围,点“保存”出现“输入框A超过输入范围”
2、 只有输入框B超过输入范围,点“保存”出现“输入框B超过输入范围”
3、输入框A和输入框B都超过范围,点“保存”出现“输入框A超过输入范围”
于是我们需要验证弹出框是否出现且与预期提示内容是否一致:
验证弹出框是否出现比较容易,将对话框加入对象库,用
If Browser("xxx").Dialog("xxx").Exist Then ...来验证。
但是验证对话框中的内容(也就是Static对象的text属性的值)时遇到了问题——这个系统只能有一个Static对象能加到对象库中,也就是说,我无法区分提示信息是“输入框A超过输入范围”还是“输入框B超过输入范围”。但是用描述性编程的方法就能解决这个问题。
1、将Browser("xxx").Dialog("xxx")加入对象库
2、然后用
If Browser("xxx").Dialog("xxx").Static("Text:=输入框A超过输入范围").Exist
Then ...
或者
If Browser("xxx").Dialog("xxx").Static("Text:=输入框B超过输入范围").Exist
Then ...
注:“:=”两边没有空格,有些人习惯在运算符两旁加上空格,但这里不行,这里是个字符    串,加了空格就识别不了,我就犯了这个错误。。。。。

关于弹出对话框中属性的值
为了研究关于弹出对话框中属性的值,我写了个例子,
htm代码如下:
<HTML>      
  <HEAD>            
    <TITLE>测试按钮事件            
    </TITLE>      
  </HEAD>      
  <BODY>            
    <FORM NAME="Form1">                     
      <INPUT TYPE="Button" NAME="Button1" VALUE="单击">         
      <SCRIPT FOR="Button1" EVENT="onClick" LANGUAGE="VBScript">           
            MsgBox "按钮被单击1"
            MsgBox "按钮被单击2"
            MsgBox "按钮被单击3"      
      </SCRIPT>              
    </FORM>      
  </BODY>
</HTML>
****************************************************************************
qtp代码如下:
Dim str1,str2
Browser("测试按钮事件").Sync
Browser("测试按钮事件").Page("测试按钮事件").WebButton("单击").Click
If Browser("测试按钮事件").Dialog("VBScript").Exist Then
    str1 = Browser("测试按钮事件").Dialog("VBScript").Static("按钮被单击1").GetTOProperty("Text")
    'AAA
    Reporter.ReportEvent micPass,"TO文本内容",str1
    Browser("测试按钮事件").Dialog("VBScript").WinButton("确定").Click
End If
If Browser("测试按钮事件").Dialog("VBScript").Static("Text:=按钮被单击2").Exist
' BBB
Then
        Browser("测试按钮事件").Dialog("VBScript").WinButton("Text:=确定").Click
        Reporter.ReportEvent micPass,"描述编程的操作","成功"
End If
If Browser("测试按钮事件").Dialog("VBScript").Static("window id:=65535").Exist Then
    str2 = Browser("测试按钮事件").Dialog("VBScript").Static("window id:=65535").GetROProperty("Text")
    'CCC
        Browser("测试按钮事件").Dialog("VBScript").WinButton("Text:=确定").Click
        Reporter.ReportEvent micPass,"描述编程的取值",str2
End If

AAA处,我将Browser("测试按钮事件").Dialog("VBScript").Static("按钮被单击1")加入对象库,
        因此,可以用TO方法来获取"Text"的属性值,但无法使用RO方法,因为此对象无法获取RO属性。
BBB处,则是验证描述性编程能否成功
CCC处,这是很关键的一步,因为这里,我通过描述性编程,使用RO方法获取当前Static的Text的属性值

附带qtp代码和html代码,使用方法,用ie打开html文件(允许加载脚本),再打开QTP,
在Record and run选项中选择 “Record and run test on any open browser”

[ 本帖最后由 mao303mao 于 2010-8-4 08:27 编辑 ]
作者: june.diny    时间: 2010-8-3 09:27
AAA处,我将Browser("测试按钮事件").Dialog("VBScript").Static("按钮被单击1")加入对象库,
        因此,可以用TO方法来获取"Text"的属性值,但无法使用RO方法,因为此对象无法获取RO属性-------为什么无法获取呢?
作者: mao303mao    时间: 2010-8-3 13:17
这个你可以用object spy试一下,是无法看到RO属性的




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