51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2298|回复: 5
打印 上一主题 下一主题

[原创] QTP自带订票程序问题--在线等

[复制链接]
  • TA的每日心情
    郁闷
    2015-4-8 09:43
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2013-1-27 12:11:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    小弟新手一名,在执行QTP自带登录界面测试的时候遇到一个问题,
    用了4个用例。出现错误的登录名与密码的时候用了if做判断

    登录名与密码参数化
    用例
    1、用户名密码为空                     
    2、用户名密码错误
    3、长度大于4字符的正确用户名与正确的密码  //正确登录系统
    4、正确用户名与密码                       //正确登录系统

    脚本如下:
    出现的问题是跑到用例3的时候窗口关闭,用例4就无法继续跑了
    所以就在想,如果今后100个用例,跑到第10个用例,本来是不应该登录到系统的,却登录到系统了(算是一个bug),现在却退出系统了。脚本到第11个就不自动跑了。那后面90个用例咋办。难道是删除这个用例继续跑?
    烦请优化一下脚本,解惑一下
    Dialog("Login").WinEdit("Agent Name:").Set DataTable("username", dtGlobalSheet)
    Dialog("Login").WinEdit("Password:").SetSecure DataTable("psword", dtGlobalSheet)
    Dialog("Login").WinButton("OK").Click
       If Dialog("Login").Dialog("Flight Reservations").Exist Then
       Dialog("Login").Dialog("Flight Reservations").WinButton("确定").Click
       Dialog("Login").WinButton("Cancel").Click
        else
       Window("Flight Reservation").WinMenu("Menu").Select "File;Exit"
    End If
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    该用户从未签到

    2#
    发表于 2013-1-30 10:50:16 | 只看该作者
    跑到用例3的时候,登录系统,再录制退出系统,继续登录,就可以运行到用例4了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
    发表于 2013-2-20 17:34:10 | 只看该作者
    1. Dialog("登录").WinEdit("代理名称:").Set DataTable("代理名称", dtLocalSheet)
    2. Dialog("登录").WinEdit("密码:").SetSecure DataTable("密码", dtLocalSheet)
    3. Dialog("登录").WinButton("确定").Click
    4. If         Dialog("登录").Dialog("航班预订").exist then
    5.         Dialog("登录").Dialog("航班预订").WinButton("确定").Click
    6.         Dialog("登录").WinButton("取消").Click
    7.     else
    8. Window("航班预订").Close
    9. end if
    10. wait (2)
    复制代码
    我的代码和lz一样,且代理名称和密码的参数如下:
    代理名称:空,1,11,1111
    密码:空,1,11,1111,mercury
    然后设置文件菜单-设置-运行-数据表循环:在所有行上运行,
    但是为什么我运行脚本以后就只运行一次?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2014-12-18 10:31
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    4#
    发表于 2013-2-21 09:33:29 | 只看该作者
    回复 3# windofland
    你和他脚本数据存放的DataTable不一样,他的放在全局表中,你的放在局部表中

    dtGlobalSheet 读取Global表中数据     迭代运行设置File-Settings-Run-Data Table iterations
    dtLocalSheet   读取当前Action表中数据 迭代运行设置右键Action-Action Call properties -Run-data table iterations
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2014-12-18 10:31
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    5#
    发表于 2013-2-21 09:58:11 | 只看该作者
    对于你这种脚本运行结果不可预见的脚本运行失败的情况,建议使用简单的场景恢复
    场景恢复两种类型:
    1、在脚本运行前将应用程序恢复到初始状态
    在输入登录名密码前添加登录界面是否存在判断,若不存在则调用场景恢复
    2、在脚本运行失败后将应用程序恢复到初始状态
    在脚本末尾添加脚本运行是否失败的判断,若失败则调用场景恢复

    针对你的脚本可以将场景恢复函数简单设计为:
    关闭所有flight4a.exe进程(可以使用自带方法SystemUtil.CloseProcessByName("flight4a.exe"))然后再用SystemUtil.run "路径"  打开flight4a.exe
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2018-9-27 10:05
  • 签到天数: 36 天

    连续签到: 1 天

    [LV.5]测试团长

    6#
    发表于 2013-2-21 13:48:16 | 只看该作者
    回复 1# legend818


        也可以用Class写,在Class_Initialize中做好判断是有Flight启动的函数。在Class_Terminate中写好关闭Flight的函数。
    1. msgbox isRun("flight4a")

    2. Function isRun(ProcessName)
    3.     isRun = False
    4.     Dim Process '获取所有进程
    5.     For each Process in GetObject("winmgmts:{impersonationLevel=impersonate}").Instancesof("Win32_process")
    6.         If instr(1,Process.name,ProcessName)  Then
    7.             print  ProcessName & "已运行。"
    8.             isRun = True
    9.             Exit For
    10.         End If
    11.     Next
    12. End Function
    复制代码
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-10 23:11 , Processed in 0.080818 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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