51Testing软件测试论坛

标题: 怎样在脚本中增加等待时间? [打印本页]

作者: aprina    时间: 2006-6-26 12:38
标题: 怎样在脚本中增加等待时间?
请教各位高手,怎样在脚本中增加等待时间?

执行回放录制脚本时失败,Retry后又能继续完成,怎样解决?

比如测试系统登陆后,需要等待一段时间,注销这个object才能出来,希望执行注销前,等待一段时间.有两个方案:
方案1:设置所有对象的等待超时时间,进入test-settings-run,设置object sychronization timeout 值增大,缺省设置为:20000 milliseconds。
方案2:使用Exist, Wait 语句,在继续下一步骤前,等待多长时间。

方案1已经ok了.
但是方案2不知道该怎样写这个脚本? 照葫芦化瓢以后,不能执行. 呵呵,不好意思,刚学,哪位指教一下?先谢了.
下面的 LoginOK 开始的那段,就出错了.错误信息是这样的:
Cannot identify the object "http://10.66.128.6:8080/test/"(of class WebArea). Verify that this object's properties match an object currently displayed in your application.

Browser("测试login系统").Page("测试login系统").WebEdit("WebEdit").Set ""
Browser("测试login系统").Page("测试login系统").WebEdit("WebEdit").Set "a0125"
Browser("测试login系统").Page("测试login系统").WebEdit("WebEdit_2").SetSecure "449ce6c06324101810f0ff3377c3302b8bb0545e5e62"
Browser("测试login系统").Page("测试login系统").WebArea("http://10.66.128.6:8080/test/").FireEvent "onmouseover"
Browser("测试login系统").Page("测试login系统").WebArea("http://10.66.128.6:8080/test/").Click

LoginOK=Browser("测试login系统").Page("测试login系统").WebArea("http://10.66.128.6:8080/test/").Click.Exist
counter=1
While Not  LoginOK
        Wait(2)
        LoginOK=Browser("测试login系统").Page("测试login系统").WebArea("http://10.66.128.6:8080/test/").Click.Exist
        counter=counter+1
        If counter=10  Then
                LoninOK=True
        End If
Wend

Browser("测试login系统").Page("测试login系统_2").Frame("FrameMain").WebElement("登录/注销").Click
Browser("测试login系统").Page("测试login系统_2").Frame("FrameMain").WebElement("注销").Click
Browser("测试login系统").Dialog("Microsoft Internet Explorer").WinButton("确定").Click
Browser("测试login系统").Page("测试login系统").Sync
作者: xiaonan    时间: 2006-6-26 12:48
不是回你了吗?用wait(10)函数啊
作者: chill    时间: 2006-6-26 13:08
object.Exist( [TimeOut] )
你Exist语法用错了,应该加上括号object.Exist()
                                                         chill
作者: wfq80825    时间: 2006-6-26 13:26
加入等待时间有两种方式,一种是同步点,另一种就是wait语句。这两者之间用法上有点技巧,同步点会根据不同情况进行延时,而wait语句中所添加的时间值是固定的。举个生活中的例子,同步点就像你公交车停靠站所花费时间一样是一个不确定值,而wait语句就像地铁停靠站时间一样是一个确定值;
同时注意,添加同步点时不要加错位置,哪个语句出错了,就在哪个语句的前面添加同步点
作者: walker1020    时间: 2006-6-26 15:34
根据楼主的描述,我的建议是用同步点,这样肯定能行。如果采用你的第二个方案,等待的时间要足够长。否则遇到网络堵塞或机器的性能不好等情况,你要测试的对象有可能还是出不来。
只要是能解决问题就可以了,不要管是采用了什么方法。用邓小平的一句名言:“不管是白猫,还是黑猫,只要逮住老鼠,就是好猫。”
我不知道楼主发这个帖子是为了解决问题还是想学习怎么使用object.Exist
作者: aprina    时间: 2006-6-26 16:21
标题: 多谢各位!主要是想学习使用wait这样的方法
这个论坛不错啊。
作者: aprina    时间: 2006-6-26 20:50
把LoginOK=Browser("测试login系统").Page("测试login系统").WebArea("http://10.66.128.6:8080/test/").Click.Exist
改成LoginOK=Browser("测试login系统").Page("测试login系统_2").Frame("FrameMain").WebElement("登录/注销").Exist
就对了,我理解原因是这样的:
Browser("测试login系统").Page("测试login系统").WebArea("http://10.66.128.6:8080/test/").Click 这是一个方法,不应该判断这个方法是否存在了,
而应该判断
Browser("测试login系统").Page("测试login系统_2").Frame("FrameMain").WebElement("登录/注销") 这个对象存在后,再对这个对象做后续的click操作。

下面这段代码就能正确执行了。

Browser("测试login系统").Page("测试login系统").WebEdit("WebEdit").Set ""
Browser("测试login系统").Page("测试login系统").WebEdit("WebEdit").Set "a0125"
Browser("测试login系统").Page("测试login系统").WebEdit("WebEdit_2").SetSecure "449ce6c06324101810f0ff3377c3302b8bb0545e5e62"
Browser("测试login系统").Page("测试login系统").WebArea("http://10.66.128.6:8080/test/").FireEvent "onmouseover"
Browser("测试login系统").Page("测试login系统").WebArea("http://10.66.128.6:8080/test/").Click

LoginOK=Browser("测试login系统").Page("测试login系统_2").Frame("FrameMain").WebElement("登录/注销").Exist
counter=1
While Not  LoginOK
        Wait(2)
        LoginOK=Browser("测试login系统").Page("测试login系统_2").Frame("FrameMain").WebElement("登录/注销").Exist
        counter=counter+1
        If counter=10  Then
                LoninOK=True
        End If
Wend

Browser("测试login系统").Page("测试login系统_2").Frame("FrameMain").WebElement("登录/注销").Click
Browser("测试login系统").Page("测试login系统_2").Frame("FrameMain").WebElement("注销").Click
Browser("测试login系统").Dialog("Microsoft Internet Explorer").WinButton("确定").Click
Browser("测试login系统").Page("测试login系统").Sync
作者: walker1020    时间: 2006-6-27 10:21
aprina  说的对,很有道理! 这是不是你要的结果?
作者: xiaonan    时间: 2006-6-27 10:32
希望大家能把解决问题后答案给公布出来,以便让他人学习.谢谢!
作者: mingerp1026    时间: 2006-7-27 16:09
aprina 说的很对,我今天遇到同样问题也是这样解决的
谢谢大家分享!
还有点体会,遇到这种情况,我分段录制脚本也是可以的
作者: stq1000    时间: 2006-7-28 15:35
哈哈,又学到了一点知识,把我的一个问题也解决了,太好了。。
作者: applebugs    时间: 2006-7-28 22:51
标题: 回贴
个人认为,只要用wait语句,不是绝对,谁可不可以举例,就此程序而言,怎么用同步来实现?
作者: yylfchl    时间: 2011-10-19 14:32
SystemUtil.Run "C:\Program Files\Internet Explorer\iexplore.exe","","C:\Documents and Settings\pc003-2011","open"
Browser("百度一下,你就知道").WinEdit("Edit").SetSelection 0,21
Browser("百度一下,你就知道").WinEdit("Edit").Type "http://192.168.10.148:8080/ca"
Browser("百度一下,你就知道").WinEdit("Edit").Set "http://192.168.10.148:8080/cas"
Browser("百度一下,你就知道").WinEdit("Edit").Type  micReturn
Browser("百度一下,你就知道").Page("电子交易平台管理系统").WebEdit("empAcct").Set "yyl"
Browser("百度一下,你就知道").Page("电子交易平台管理系统").WebEdit("password").Click
Browser("百度一下,你就知道").Page("电子交易平台管理系统").WebEdit("password").SetSecure "4e9e6909c197016bc6d605678fda"
Browser("百度一下,你就知道").Page("电子交易平台管理系统").WebEdit("validcode").Click
Browser("百度一下,你就知道").Page("电子交易平台管理系统").WebEdit("validcode").Set "8020"
Browser("百度一下,你就知道").Page("电子交易平台管理系统").Image("dl").Click
Browser("百度一下,你就知道").Page("电子交易平台后台管理系统").Link("交易管理").Click
Browser("百度一下,你就知道").Page("交易管理").Sync
Browser("百度一下,你就知道").Close
回放出错:Cannot identify the object "交易管理" (of class Link). Verify that this object's properties match an object currently displayed in your application.
求帮忙解决
作者: gszhaochengyong    时间: 2011-11-2 14:08
WAIT()
作者: SexyCat_1113    时间: 2011-11-2 19:47
.Click.Exist
能这样写?
作者: wangyanzhao    时间: 2011-11-3 09:46
举个例子:browser("***").sync  是等待浏览器加载完成,见右下角有“完成”即可。




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