51Testing软件测试论坛

标题: DO ...LOOP语句中使用多重if语句的问题 [打印本页]

作者: wslf    时间: 2007-2-12 10:30
标题: DO ...LOOP语句中使用多重if语句的问题
在写qtp脚本的时候,在do。。loop循环中对取数进行判断,我使用了if语句,刚开始写一个if语句是没有问题的,然而我加了多重if语句(if ...else if...esleif...)而这时再运行时,就总是报loop缺少do语句,请问这样我应该怎么写呢,需要用什么符号将if段括上吗
作者: xiaonan    时间: 2007-2-12 10:42
你是不是if语句的逻辑有问题啊,或者没有end if结束掉.把代码放上来,看看.
作者: wslf    时间: 2007-2-12 11:01
标题: 这段代码
Do while i<RowCount
    i=i+1
        datatable.GetSheet("51sheet")
        datatable.SetCurrentRow(i)
        temp=Datatable.GetSheet("51sheet").GetParameter("jine").value

If   temp>0 Then
   
Browser("**系统").Page("**系统").WebElement("userID").FireEvent "onmouseover"
Browser("**系统").Page("**系统").Image("Image1").Click 29,9
Browser("**系统").Page("**系统_2").Frame("topFrame").WebElement("unselect_left").FireEvent "onmouseover"
Browser("**系统").Page("**系统_2").Frame("topFrame").WebElement("unselect_left").FireEvent "onmouseover"
Browser("**系统").Page("**系统_2").Frame("topFrame").WebElement("unselect_left_2").FireEvent "onmouseover"
Browser("**系统").Page("**系统_2").Frame("topFrame").WebElement("unselect_left_2").Click
Browser("**系统").Page("**系统_2").Frame("Frame").WebElement("资金划拨").FireEvent "onmouseover"
Browser("**系统").Page("**系统_2").Frame("Frame").WebElement("信贷管理").FireEvent "onmouseover"
Browser("**系统").Page("**系统_2").Frame("Frame").WebElement("信贷管理").Click
Browser("**系统").Page("**系统_2").Frame("navigateDetailFrame").Link("内部借款").Click
Browser("**系统").Page("**系统_2").Frame("navigateDetailFrame").Link("内部借款申请").Click
Browser("**系统").Page("**系统_2").Frame("leftFrame").WebTable("WebTable").FireEvent "onmouseover"
Browser("**系统").Page("**系统_2").Frame("mainFrame").WebElement("新增").FireEvent "onmouseover"
Browser("**系统").Page("**系统_2").Frame("mainFrame").Image("新增").FireEvent "onmouseover"
Browser("**系统").Page("**系统_2").Frame("mainFrame").Image("新增").Click
Browser("**系统").Page("**系统_2").Frame("mainFrame_2").Image("lookup").Click
Browser("**系统").Window("-- 网页对话框").Page("单位编码").Frame("lookupMainFrame").WebElement("WebTable").FireEvent "onmouseover"
Browser("**系统").Window("-- 网页对话框").Page("单位编码").Frame("lookupMainFrame").WebElement("WebTable").FireEvent "onmousedown"
Browser("**系统").Window("-- 网页对话框").Page("单位编码").Frame("lookupMainFrame").WebElement("WebTable").FireEvent "ondblclick"
Browser("**系统").Page("**系统_2").Frame("mainFrame_2").Image("lookup_2").Click
Browser("**系统").Window("-- 网页对话框").Page("单位编码").Frame("lookupMainFrame").WebElement("WebTable_2").FireEvent "onmouseover"
Browser("**系统").Window("-- 网页对话框").Page("单位编码").Frame("lookupMainFrame").WebElement("WebTable_2").FireEvent "onmousedown"
Browser("**系统").Window("-- 网页对话框").Page("单位编码").Frame("lookupMainFrame").WebElement("WebTable_2").FireEvent "ondblclick"
Browser("**系统").Page("**系统_2").Frame("mainFrame_2").Image("lookup_3").Click
Browser("**系统").Window("-- 网页对话框").Page("单位编码").Frame("lookupMainFrame").WebElement("WebTable_3").FireEvent "onmouseover"
Browser("**系统").Window("-- 网页对话框").Page("单位编码").Frame("lookupMainFrame").WebElement("WebTable_3").FireEvent "onmousedown"
Browser("**系统").Window("-- 网页对话框").Page("单位编码").Frame("lookupMainFrame").WebElement("WebTable_3").FireEvent "ondblclick"
Browser("**系统").Page("**系统_2").Frame("mainFrame_2").Image("lookup_4").Click
Browser("**系统").Window("-- 网页对话框").Page("单位编码").Frame("lookupMainFrame").WebElement("WebTable_4").FireEvent "onmouseover"
Browser("**系统").Window("-- 网页对话框").Page("单位编码").Frame("lookupMainFrame").WebElement("WebTable_4").FireEvent "onmousedown"
Browser("**系统").Window("-- 网页对话框").Page("单位编码").Frame("lookupMainFrame").WebElement("WebTable_4").FireEvent "ondblclick"
Browser("**系统").Page("**系统_2").Frame("mainFrame_2").WebList("loan_mode").Select "质押贷款"
Browser("**系统").Page("**系统_2").Frame("mainFrame_2").WebList("rate_id").Select "短期借款半年"
Browser("**系统").Page("**系统_2").Frame("mainFrame_2").Image("lookup_5").Click
Browser("**系统").Window("-- 网页对话框").Page("单位编码").Frame("lookupMainFrame").WebElement("WebTable_5").FireEvent "onmouseover"
Browser("**系统").Window("-- 网页对话框").Page("单位编码").Frame("lookupMainFrame").WebElement("WebTable_6").FireEvent "onmouseover"
Browser("**系统").Window("-- 网页对话框").Page("单位编码").Frame("lookupMainFrame").WebElement("WebTable_7").FireEvent "onmouseover"
Browser("**系统").Window("-- 网页对话框").Page("单位编码").Frame("lookupMainFrame").WebElement("WebTable_7").FireEvent "onmousedown"
Browser("**系统").Window("-- 网页对话框").Page("单位编码").Frame("lookupMainFrame").WebElement("WebTable_7").FireEvent "ondblclick"
Browser("**系统").Page("**系统_2").Frame("mainFrame_2").WebElement("保存").FireEvent "onmouseover"
Browser("**系统").Page("**系统_2").Frame("mainFrame_2").WebEdit("money_pl_amount").Set temp
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("mainFrame_3").WebElement("新增_2").FireEvent "onmouseover"
Browser("**系统").Page("**系统_2").Frame("Frame").WebElement("查询报表").FireEvent "onmouseover"
Browser("**系统").Page("**系统_2").Frame("mainFrame_3").WebElement("chk").FireEvent "onmouseover"
Browser("**系统").Page("**系统_2").Frame("mainFrame_3").WebElement("新增_2").FireEvent "onmouseover"
Browser("**系统").Page("**系统_2").Frame("topFrame").Image("individuation_icon").Click
Browser("**系统").Dialog("Microsoft Internet Explorer").WinButton("确定").Click
Browser("**系统").Page("**系统_3").WebElement("userID").FireEvent "onmouseover"
Browser("**系统").Page("**系统_3").WebElement("userID").FireEvent "onmouseover"
else if  temp<0 then
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"
'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
else if  temp=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"
'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     
End If

Loop
作者: wssgily    时间: 2007-2-12 11:05
少endif.你加一个试试.我没有运行.
作者: wslf    时间: 2007-2-12 11:12
标题: en?LOOP前不是有一个end if吗?还用加吗
en?LOOP前不是有一个end if吗?还用加吗
作者: xiaonan    时间: 2007-2-12 11:36
恩,我看到了.不是前面没看到脚本嘛,只是猜测而已.你这里过多的else if,是不是可以改成select case更加清楚点.  然后把格式给排的好一点,对称一下,现在脚本的可读性很差.目前这样看,没看出什么问题.

[ 本帖最后由 xiaonan 于 2007-2-12 11:42 编辑 ]
作者: skyzhu    时间: 2007-2-12 14:11
再加2个end if
else if 也要end

或者把 else if 连起来ElseIf

[ 本帖最后由 skyzhu 于 2007-2-12 14:14 编辑 ]
作者: wawa133    时间: 2007-2-12 15:21
不知道是QTP的问题还是什么的.有时候你就算都对了,还是会报一些类似没有endif之类的错误,之前也是遇到过,后来就不用elseif了,干脆就一个一个地写.
作者: xiaonan    时间: 2007-2-12 16:40
原帖由 skyzhu 于 2007-2-12 14:11 发表
再加2个end if
else if 也要end

或者把 else if 连起来ElseIf


呵呵,这位同学对if的多重嵌套理解有误哦.建议去看一下这方面的资料.if的多重嵌套,只要最后结束掉就好.




原帖由 wawa133 于 2007-2-12 15:21 发表
不知道是QTP的问题还是什么的.有时候你就算都对了,还是会报一些类似没有endif之类的错误,之前也是遇到过,后来就不用elseif了,干脆就一个一个地写.


恩,这也是我要说的.在整理脚本的时候,请注意格式,比如:你上面的程序排版成:
do while ....
    ............
    if ..... then
       ..........
    elseif ....... then
       ..........
    end if
loop

这样一来增加了脚本的可度性,也不会有遗漏end if等情况,一目了然.  QTP可能在这方面没vb等工具强大,所以你不对齐的话,就有可以出现找不到结束语句,如有do没loop啊等等.
作者: skyzhu    时间: 2007-2-13 10:28
标题: to: xiaonan
你试下就知道了,else if 和 elseif ,连着和分开不一样的
lz就是因为分开了所以才报错的
以前特别在vbsedit上研究过这东西
作者: xiaonan    时间: 2007-2-13 10:54
原帖由 skyzhu 于 2007-2-13 10:28 发表
你试下就知道了,else if 和 elseif ,连着和分开不一样的
lz就是因为分开了所以才报错的
以前特别在vbsedit上研究过这东西


是要连着写的啊,这是语法.没这种else if 分开的写法,elseif也没你所说的要多end if结束.LZ的写法的确有问题,我没看仔细,不好意思.
作者: xp20683    时间: 2007-2-13 11:26
else if变成elseif就OK
作者: Coffey111111    时间: 2007-2-14 09:35
是的,我也遇到过这种问题的,elseif要连着写的,sdlkfj5
作者: htot05    时间: 2007-2-14 09:59
不错~!以前吃过这样的亏,呵呵~!sdlkfj5




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