|
本帖最后由 lyscser 于 2010-10-28 22:02 编辑
1.
等待时间的艺术
对象是否出现不明确或者应用系统响应时间不确定的时候,我们往往采取Wait的方法,而且这个时间是不确定,所以一般初学者会考虑使用最大时间值(系统最慢的情形)。其实完全没有必要等这么长时间,而且如果系统忽快忽慢怎么办?总不能每次“跑脚本”之前都去修改一次吧,这样脚本少还可以,脚本多(一个或多个测试集往往牵涉到几十上百个测试脚本)了呢?这样的话,脚本维护的代价太昂贵了!
这种情况下可以考虑写一些循环语句代替wait语句,这些语句写得合理的话,会在系统响应的第一时间做下一步操作,而长时间无响应就可以通过跳出条件来终止运行,报告系统连接超时就可以了。因为这种速度的系统版本客户是不会要的,一般情况下这种测试是没有意义的。
下面是我曾经使用的一些例子:
1、系统必须作出响应的情形,无须跳出,只待系统正常,否则手动干预:
Do
If Browser("teller").Page("teller").Frame("content").WebList("ACCT_STATUS").GetROProperty("value") = "" Then
Else
Exit Do
End If
Loop
2、使用WaitProperty函数,该函数的作用基本上和If……Exist(second)……End If比较类似。但是它的判断结果有True和False两种,在If的判断语句的时候很方便,因为条件成立可以执行下一步,反之如果需要不成立而去执行下一步,他的作用就不是If……Exist(second)……End If所能比的了。
WaitProperty("visible",true,10000)
第一个引号内参数是对象的属性名称,第二个是该属性的值,第三个就是等待的时间,单位是毫秒,具体的应用如:
If Browser("teller").Page("teller").WebElement("手续费打印完毕!
").WaitProperty("innertext","手续费打印完毕!",60000) = False Then
Browser("teller").Page("teller").Image("ToolBar_Refresh_0").Click
Elseif Browser("teller").Dialog("Microsoft Internet Explorer").Exist(10)Then
Browser("teller").Dialog("Microsoft Internet Explorer").WinButton("确定").Click
Browser("teller").Page("teller").Image("ToolBar_Refresh_0").Click
Reporter.ReportEvent micFail, "发出托收票据", "交易失败"
ExitAction(-1)
End If
3、定义弹出框存在性状态,使用循环语句判断
Dim blnDone,counter
blnDone=false
counter=1
While blnDone
Wait (1)
blnDone=Window("iexplore").WinObject("OK").Exist
counter=counter+1
If counter=10 then
blnDone=True
End if
Wend
4、循环判断,跳出条件是i=10
Dim i
i=1
while ((window("iexplore").WinObject("OK").Exist) and (i<10))
window("Iexplore").WinObject("OK").Click
i=i+1
wend |
|