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 编辑 ] AAA处,我将Browser("测试按钮事件").Dialog("VBScript").Static("按钮被单击1")加入对象库,
因此,可以用TO方法来获取"Text"的属性值,但无法使用RO方法,因为此对象无法获取RO属性-------为什么无法获取呢? 这个你可以用object spy试一下,是无法看到RO属性的
页:
[1]