51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1621|回复: 2
打印 上一主题 下一主题

[原创] web弹出框与描述性编程的那些事

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-8-2 21:23:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    开心
    2017-3-3 10:21
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]测试排长

    2#
    发表于 2010-8-3 09:27:59 | 只看该作者
    AAA处,我将Browser("测试按钮事件").Dialog("VBScript").Static("按钮被单击1")加入对象库,
            因此,可以用TO方法来获取"Text"的属性值,但无法使用RO方法,因为此对象无法获取RO属性-------为什么无法获取呢?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
     楼主| 发表于 2010-8-3 13:17:04 | 只看该作者
    这个你可以用object spy试一下,是无法看到RO属性的
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-17 03:49 , Processed in 0.078856 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表