51Testing软件测试论坛

标题: 邪门的判断语句执行结果 [打印本页]

作者: onlonely    时间: 2009-3-26 19:02
标题: 邪门的判断语句执行结果
今天编一个脚本总是调不通,我就单步调试,不断修改代码输出过程结果,最终找到问题原因是一个判断语句的问题,
原代码比较繁杂,我就简化了代码,如下:
Dim i
dim j
i = testpage.Exist                 '这个是个判断对象是否存在的语句 ,我执行的时候获得的是false
j = allpage.link("text:=退出","index:=0").exist     '我实际执行获得的是true
msgbox(i)   '调试语句
msgbox(j)   '调试语句
If i = false and  j  = true Then
msgbox("语句1")
else
msgbox("语句2")
end if
msgbox("语句3")


这段代码你们猜是执行语句几呢!
如果只看代码走读下来,就肯定是执行"语句1"

但是实际上我执行的结果却是直接执行"语句3" ---太邪门了.
希望大家帮我想想原因,和解决方案吧.

[ 本帖最后由 onlonely 于 2009-3-26 21:07 编辑 ]
作者: sterson    时间: 2009-3-26 20:41
按程序来看..会执行msgbox("语句1"),然后再执行msgbox("语句3")

如果语句一不执行,那你就试一下这样,
Dim i, j
i = False
j = True
If (i = False And j = True) Then
MsgBox ("语句1")
Else
MsgBox ("语句2")
End If
MsgBox ("语句3")
如果还不行..那你就拆分判断语句,
if i=false then
   if j=true then
     ....
   else
   ...
   end if
end if
作者: onlonely    时间: 2009-3-26 21:12
标题: 回复 2# 的帖子
你的方法我当时就试过了.
得出的结论是
这样的代码

Dim i, j
i = False    '直接赋值
j = True
If (i = False And j = True) Then
MsgBox ("语句1")
Else
MsgBox ("语句2")
End If
MsgBox ("语句3")

可以先执行  语句1再执行语句3

但是使用判断对象方法(.exist)获得的结果就不行了.并且出问题的是判断结果是true.这个对象.
我用msgbox输出判断结果是true,但是如果用在判断语句中,整个判断语句就完全失效

目前找到一个解决方案就是使用:If (i = False And j<> false) Then这样的判断语句,就可行.-----太邪门了.

[ 本帖最后由 onlonely 于 2009-3-26 21:14 编辑 ]




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