51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4352|回复: 26
打印 上一主题 下一主题

[原创] 参数化脚本,再对数据进行判断所出现的问题!

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2006-5-15 17:12:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是我操作的代码

Dialog("Login").WinEdit("Agent Name:").Set DataTable("UserName", dtGlobalSheet)
Dialog("Login").WinEdit("Password:").SetSecure DataTable("Password", dtGlobalSheet)
Dialog("Login").WinButton("OK").Click
errer_message(
If ( "Agent Name:" = " " ) Then
        Dialog("Login").Dialog("Flight Reservations").Activate
        Dialog("Login").Dialog("Flight Reservations").WinButton("确定").Click
End If
1、在这个脚本中为什么不执行Dialog("Login").Dialog("Flight Reservations").WinButton("确定").Click语句?
2、把所有在登陆的时候会出现的数据输入都写在参数化的数据表中了,我如何根据这些数据来进行判断?

[ 本帖最后由 angel_test 于 2006-5-15 17:13 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2006-5-15 17:19:26 | 只看该作者
1,没有执行说明你的If语句不对啊~
2,你要判断什么?
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2006-5-15 17:29:46 | 只看该作者
if语句是执行了,但是在弹出“Flight Reservations”提示对话框的时候,QTP无法去执行单击“确定”按钮,这是为什么?
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2006-5-15 17:32:43 | 只看该作者
弹出后你等一下,然后看看出现什么错误?
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2006-5-15 17:33:12 | 只看该作者
我要判断的是,比如一个登陆功能,对用户名、密码进行参数化后,把各种可能的情况都写到参数化的表中,然后再去判断用户名和密码是否正确,如果不正确就弹出提示信息,如果正确就正确登陆系统的一个操作。
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2006-5-15 17:35:28 | 只看该作者
原帖由 Horus_Ra 于 2006-5-15 17:32 发表
弹出后你等一下,然后看看出现什么错误?


没有任何错误提示,停留在“Flight Reservations”提示对话框界面。
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2006-5-15 17:38:21 | 只看该作者
QTP提示什么?还是运行结束?如果是运行结束的话,说明If语句没执行啊~
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2006-5-15 17:44:48 | 只看该作者
原帖由 Horus_Ra 于 2006-5-15 17:38 发表
QTP提示什么?还是运行结束?如果是运行结束的话,说明If语句没执行啊~


我参数化的用户名第一行为空,密码正确,所以if语句是执行了,只是在弹出下面界面,就不运行了,没有任何提示或报错信息。

[ 本帖最后由 angel_test 于 2006-5-15 17:46 编辑 ]

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2006-5-15 18:18:18 | 只看该作者
你在If里面加上msgbox试试看,看看是不是真的运行了?
而且,如果内容为空的话,应该是"",而不是" "
If ( "Agent Name:" = "" ) Then
        msgbox "!!!!"
        Dialog("Login").Dialog("Flight Reservations").Activate
        Dialog("Login").Dialog("Flight Reservations").WinButton("确定").Click
End If

如果的确运行了,又不按“确定”,脚本肯定不能执行下去的……
回复 支持 反对

使用道具 举报

该用户从未签到

10#
 楼主| 发表于 2006-5-15 21:07:35 | 只看该作者
好像楼上的,还是没有给出解答的方法哦,呵呵,不过先谢谢你!
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2006-5-16 13:11:08 | 只看该作者
是你自己没找到问题的原因!
你说执行到确定按钮就不执行了,但这个“不执行”到底是卡在那里了,还是有等一会有错误弹出,还是运行结束??难道你自己都不知道??

而且我很确定问题的原因就是因为你If语句没执行!你原先的句子是If ( "Agent Name:" = " " ) Then,也就是说,当用户名是一个空格的时候才执行,而我试过,用户名是一个空格的话,错误提示不是这样的!他会说要输入至少4个字符,而不是让你输入用户名!所以很明显是你这个If语句的问题~这一点我在二楼就跟你说了!
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2006-5-16 13:38:50 | 只看该作者
测试目的:参数化用户名,密码,判断登陆后系统的提示信息(包含所有报错信息)------如果不正确就弹出提示信息,如果正确就正确登陆系统的一个操作。
两位 能不能换一个判断点
设计思路
1.由于点确认按钮时,系统已经开始运行判断语句,如有错,将各种运行报错信息进行了提示
2.程序只需要判断报错对话框是否出现,具体报错信息由应用程序自行显示
3.在判别错误对话框是否出现后,我们只需要针对报错情况,给予相应处理;没有报错的情况,也赋予一定的处理即可
Dialog("Login").WinEdit("Agent Name:").Set DataTable("UserName", dtGlobalSheet)
Dialog("Login").WinEdit("Password:").SetSecure DataTable("Password", dtGlobalSheet)
Dialog("Login").WinButton("OK").Click
If Dialog("Login").Dialog("Flight Reservations").Exist Then
'登陆失败
        Dialog("Login").Dialog("Flight Reservations").WinButton("确定").Click
        Reporter.ReportEvent micFail, "登陆结果", "登陆失败"
        Dialog("Login").WinButton("Cancel").Click
else
'登陆成功
        Window("Flight Reservation").WaitProperty "text"," Flight Reservation", 10000
        Window("Flight Reservation").Check CheckPoint("Flight Reservation")
        Window("Flight Reservation").Activate

我要判断的是,比如一个登陆功能,对用户名、密码进行参数化后,把各种可能的情况都写到参数化的表中,然后再去判断用户名和密码是否正确,如果不正确就弹出提示信息,如果正确就正确登陆系统的一个操作。
回复 支持 反对

使用道具 举报

该用户从未签到

13#
 楼主| 发表于 2006-5-16 14:26:32 | 只看该作者
恩,谢谢楼上的了!
你的思路很清晰,我要的就是这种思路。谢谢!
回复 支持 反对

使用道具 举报

该用户从未签到

14#
 楼主| 发表于 2006-5-16 15:20:35 | 只看该作者
设计思路
1.由于点确认按钮时,系统已经开始运行判断语句,如有错,将各种运行报错信息进行了提示
2.程序只需要判断报错对话框是否出现,具体报错信息由应用程序自行显示
3.在判别错误对话框是否出现后,我们只需要针对报错情况,给予相应处理;没有报错的情况,也赋予一定的处理即可
Dialog("Login").WinEdit("Agent Name:").Set DataTable("UserName", dtGlobalSheet)
Dialog("Login").WinEdit("Password:").SetSecure DataTable("Password", dtGlobalSheet)
Dialog("Login").WinButton("OK").Click
If Dialog("Login").Dialog("Flight Reservations").Exist Then
'登陆失败
        Dialog("Login").Dialog("Flight Reservations").WinButton("确定").Click
        Reporter.ReportEvent micPass, "登陆结果", "登陆失败"
        Dialog("Login").Dialog("Flight Reservations").WinButton("确定").Click
      ‘  Dialog("Login").WinButton("Cancel").Click  //如果执行这个语句,Login窗口就关闭了,脚本就没法运行下去了。
else
'登陆成功
        Window("Flight Reservation").WaitProperty "text"," Flight Reservation", 10000
        Window("Flight Reservation").Check CheckPoint("Flight Reservation")
        Window("Flight Reservation").Activate

[ 本帖最后由 angel_test 于 2006-5-16 16:06 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2006-5-16 15:59:38 | 只看该作者
" Dialog("Login").Dialog("Flight Reservations").WinButton("确定").Click"
看看这个确定按纽能不能在对象存储库里找到?如果没有,添加这个控件,再试试.
回复 支持 反对

使用道具 举报

该用户从未签到

16#
 楼主| 发表于 2006-5-16 16:03:02 | 只看该作者
把上面的脚本进行扩展一下。
测试目的:参数化用户名,密码,所有报错信息------如果不正确就弹出提示信息,并且对提示信息的内容的正确信进行判断;如果正确就正确登陆系统的一个操作。
Dialog("Login").WinEdit("Agent Name:").Set DataTable("UserName", dtGlobalSheet)
Dialog("Login").WinEdit("Password:").SetSecure DataTable("Password", dtGlobalSheet)
Dialog("Login").WinButton("OK").Click
If ( Dialog("Login").Dialog("Flight Reservations").Exist)Then
        Reporter.ReportEvent  micPass,"Login","Login step failed"
        Dim mesage //声明一个变量
        mesage = DataTable("Message", dtGlobalSheet) //把参数化的报错信息赋值给这个变量
        Reporter.ReportEvent micPass,"Message",mesage //查看变量中的值是否正确取得
        Dialog("Login").Dialog("Flight Reservations").Static(mesage).Click  //把变量中的信息传给Static函数
        Dialog("Login").Dialog("Flight Reservations").WinButton("确定").Click
        else
                Window("Flight Reservation").WaitProperty "text"," Flight Reservation", 10000
                Window("Flight Reservation").Check CheckPoint("Flight Reservation")
                Window("Flight Reservation").Activate
End If
运行脚本,提示Static对象在对象库中找不到。
问题:1、是不是还需通过Object Spy捕获对象工具把每个提示信息对话框捕获下来,加载到对象库中呢?
            2、如果不捕获对象,是否还有其他更加简便的方法可以实现呢?

[ 本帖最后由 angel_test 于 2006-5-16 16:07 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

17#
发表于 2006-5-16 16:12:04 | 只看该作者
可以直接在active sceen选择你要添加到存储库的控件右击add object就可以
回复 支持 反对

使用道具 举报

该用户从未签到

18#
 楼主| 发表于 2006-5-16 17:42:07 | 只看该作者
难道只有这种通过添加对象的方法?
回复 支持 反对

使用道具 举报

该用户从未签到

19#
 楼主| 发表于 2006-5-18 11:31:10 | 只看该作者
原帖由 xiaonan 于 2006-5-16 16:12 发表
可以直接在active sceen选择你要添加到存储库的控件右击add object就可以

我使用这种方法来添加对象,但是添加不进去。
回复 支持 反对

使用道具 举报

该用户从未签到

20#
发表于 2006-5-18 11:55:33 | 只看该作者
不会的,是不是你没点add啊,然后再点ok
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-15 03:21 , Processed in 0.079339 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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