51Testing软件测试论坛

标题: QTP中这个sub函数怎么用呢 [打印本页]

作者: wslf    时间: 2007-1-31 17:18
标题: QTP中这个sub函数怎么用呢
我录了一个脚本,是一个申请金额保存的过程,其中我对金额进行参数化,程序中规定金额不能为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是我参数化的金额的变量名。

这样参数化后,重新运行时,我发现这段脚本根本就没执行。脚本运行完也不报错,什么原因呢?请各位帮忙哦。不胜感激!
作者: lily_mu75    时间: 2007-1-31 17:39
标题: 回复 #1 wslf 的帖子
我个人认为你所讲的“好像if语句必须放在sub函数里来写”不妥。
看看有关函数、子程序的有关定义,也许对你有所启发。

[ 本帖最后由 lily_mu75 于 2007-1-31 18:04 编辑 ]
作者: xiaonan    时间: 2007-1-31 17:45
首先sub不是一个函数,它只是一个没有返回值的过程.这个如果接触过vb类的语言的,就会印象比较深了.

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

至于现在有没有执行脚本,你可以设断点,单步调试一下程序.看看脚本真正有没有被执行,它是怎么随着逻辑走的.
作者: wslf    时间: 2007-1-31 18:03
标题: en?那sub后面的过程名随便定义吗?
sub后面的名称随意定义吗?那变量写在哪呢?楼上是否可以给我举个例子啊。像我要实现这个程序,该怎么写啊
作者: ccc11yyy    时间: 2007-2-1 11:01
sub只是定义了一个过程,如xiaonan说的。它本身并不不能执行,要调用才可以执行。sub后面的过程名是调用这个过程的时候用的名字。
在sub过程中的变量,一般不与sub后面的名称相同。
建议你再看看vbscript,和QTP的帮助
作者: rivermen    时间: 2007-2-8 16:38
Sub  sbname(p_jine)
{
......
}
+一个sub的名称亚
作者: yhzmw    时间: 2007-2-9 10:16
qtp有自带的function 和sub生成器。你可以利用生成器来生成函数或过程。
位置:开始--程序--qtp---ols---FunctionDefGen.exe




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2