环境变量
首先给大家看看下边这张图,看完后,你初始一瞄,发现,哇,不可能,怎么P=22,Environment.Value ("menu_now")=21但为什么p>=Environment.Value ("menu_now")为 false呢?
大家看仔细点,在Environment.Value ("menu_now")的返回值中,是有多了个双引号!这个其实一个字符串来的,所以永远无论怎么变,p>=Environment.Value ("menu_now")永远为false。
这个小小的问题,埋藏了3个月之久,脚本运行过程出现的种种奇怪现象的祸根竟然是一个如此小的误会。 "21"是string型 所以说,安检还是很重要滴
if isnumeric(...) then
...
end if 原帖由 rcpp 于 2008-9-23 17:40 发表 http://bbs.51testing.com/images/common/back.gif
所以说,安检还是很重要滴
if isnumeric(...) then
...
end if
这种情况下用isnumeric没啥用处。。。VBS会很智能的在这里做类型转换的
If isnumeric("21") Then
msgbox "is numeric"
else
msgbox "is not numeric"
End If
你觉得结果应该是啥呢~~
此外,VBS还会把Currency类型的值也认为是numeric,比如(在默认的美式Currency系统中)
If isnumeric("21,100") Then
msgbox "is numeric"
else
msgbox "is not numeric"
End If
执行下看看结果咯~ oh god,看来我对vbs的了解还是不够多啊
vbs能够强制类型转换吧?转换了再判断吧
还好以后不必陪测试人员写脚本了,不然写错了vbs还要被抱怨~ 因为VBS把所有默认的变量类型都是Variable,不是我们常说的Integer,String,Double……,所以当你要比较的不同类型的变量时候,一定要保证变量的类型一直。下面的结果就是正确的:
Dim q
q=22
Msgbox Environment.Value("Test_Value") 'Test_Value=21
If q>CInt(Environment.Value("Test_Value")) Then
Msgbox "True"
Else
Msgbox "False"
End If
所以说VBS是一种弱语言,没有VB这么好用了。这个估计要QTP的不断升级才能检测得到。 知道VBS的这个弱类型特性了,要改进的就是编程习惯了~:lol :lol 这个也是忽列这点,昨天才发现的问题,看来温故可以找到新BUG
页:
[1]