51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4806|回复: 6
打印 上一主题 下一主题

[原创] QTP中这个sub函数怎么用呢

[复制链接]
  • TA的每日心情
    郁闷
    2015-5-12 08:55
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2007-1-31 17:18:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    我录了一个脚本,是一个申请金额保存的过程,其中我对金额进行参数化,程序中规定金额不能为0或负数。那么我就想在脚本中对金额数据进行校验:当金额为正数时,正常保存;当金额为0时,提示金额不能为0,并且强制将金额改为1000;当金额为负数时,提示金额不能为负数,同样将金额改为1000,并保存。


    实现这个判断,我想使用多重if语句进行判断,但好像if语句必须放在sub函数里来写。
    我现在是这样写的:
    Sub  p_jine

    If  p_jine>0 Then

    Browser("**系统").Page("**系统_2").Frame("mainFrame_2").Image("保存").FireEvent "onmouseover"
    Browser("**系统").Page("**系统_2").Frame("mainFrame_2").Image("保存").Click
    Browser("**系统").Page("**系统_2").Frame("mainFrame_3").WebElement("新增").FireEvent "onmouseover"
    Browser("**系统").Page("**系统_2").Frame("topFrame").WebElement("注销").Click
    Browser("**系统").Dialog("Microsoft Internet Explorer").WinButton("确定").Click
    Browser("**系统").Page("**系统_3").Sync

    elseif  p_jine=0 then   

    Browser("**系统").Dialog("Microsoft Internet Explorer").Static("申请金额不能为0,请重新输入!").Output CheckPoint("申请金额不能为0,请重新输入!")
    Browser("**系统").Dialog("Microsoft Internet Explorer").WinButton("确定").Click
    Browser("**系统").Page("**系统_2").Frame("mainFrame_2").WebEdit("money_pl_amount").Set "10000"
    rowser("**系统").Page("**系统_2").Frame("mainFrame_2").Image("保存").FireEvent "onmouseover"
    Browser("**系统").Page("**系统_2").Frame("mainFrame_2").Image("保存").Click
    Browser("**系统").Page("**系统_2").Frame("mainFrame_3").WebElement("新增").FireEvent "onmouseover"
    Browser("**系统").Page("**系统_2").Frame("topFrame").WebElement("注销").Click
    Browser("**系统").Dialog("Microsoft Internet Explorer").WinButton("确定").Click
    Browser("**系统").Page("**系统_3").Sync     
      'x=Browser("**系统").Dialog("Microsoft Internet Explorer").Static("申请金额不能为0,请重新输入!").getroproperty("text")
      
      MsgBox("申请金额不能为0")
      'stop
      else  
    Browser("**系统").Dialog("Microsoft Internet Explorer").Static("您输入的值小于允许输入的最小值!").Output CheckPoint("您输入的值小于允许输入的最小值!")
    Browser("**系统").Dialog("Microsoft Internet Explorer").WinButton("确定").Click
    Browser("**系统").Page("**系统_2").Frame("mainFrame_2").WebEdit("money_pl_amount").Set "10000"
    rowser("**系统").Page("**系统_2").Frame("mainFrame_2").Image("保存").FireEvent "onmouseover"
    Browser("**系统").Page("**系统_2").Frame("mainFrame_2").Image("保存").Click
    Browser("**系统").Page("**系统_2").Frame("mainFrame_3").WebElement("新增").FireEvent "onmouseover"
    Browser("**系统").Page("**系统_2").Frame("topFrame").WebElement("注销").Click
    Browser("**系统").Dialog("Microsoft Internet Explorer").WinButton("确定").Click
    Browser("**系统").Page("**系统_3").Sync
    'stop
    end if
    end sub

    其中的p_jine是我参数化的金额的变量名。

    这样参数化后,重新运行时,我发现这段脚本根本就没执行。脚本运行完也不报错,什么原因呢?请各位帮忙哦。不胜感激!
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    该用户从未签到

    2#
    发表于 2007-1-31 17:39:13 | 只看该作者

    回复 #1 wslf 的帖子

    我个人认为你所讲的“好像if语句必须放在sub函数里来写”不妥。
    看看有关函数、子程序的有关定义,也许对你有所启发。

    [ 本帖最后由 lily_mu75 于 2007-1-31 18:04 编辑 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
    发表于 2007-1-31 17:45:19 | 只看该作者
    首先sub不是一个函数,它只是一个没有返回值的过程.这个如果接触过vb类的语言的,就会印象比较深了.

    if语句也并不一定要放在sub里啊,可能原先写的有问题.再者我个人感觉if语句嵌套的太多,容易引发逻辑上的错误.可以的话,在多个条件判断的时候,可以改用select case语句来判断.

    至于现在有没有执行脚本,你可以设断点,单步调试一下程序.看看脚本真正有没有被执行,它是怎么随着逻辑走的.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2015-5-12 08:55
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    4#
     楼主| 发表于 2007-1-31 18:03:34 | 只看该作者

    en?那sub后面的过程名随便定义吗?

    sub后面的名称随意定义吗?那变量写在哪呢?楼上是否可以给我举个例子啊。像我要实现这个程序,该怎么写啊
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
    发表于 2007-2-1 11:01:02 | 只看该作者
    sub只是定义了一个过程,如xiaonan说的。它本身并不不能执行,要调用才可以执行。sub后面的过程名是调用这个过程的时候用的名字。
    在sub过程中的变量,一般不与sub后面的名称相同。
    建议你再看看vbscript,和QTP的帮助
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2022-7-13 15:22
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    6#
    发表于 2007-2-8 16:38:31 | 只看该作者
    Sub  sbname(p_jine)
    {
    ......
    }
    +一个sub的名称亚
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2007-2-9 10:16:05 | 只看该作者
    qtp有自带的function 和sub生成器。你可以利用生成器来生成函数或过程。
    位置:开始--程序--qtp---ols---FunctionDefGen.exe
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-11 18:05 , Processed in 0.069589 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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