aprina 发表于 2006-6-26 12:38:00

怎样在脚本中增加等待时间?

请教各位高手,怎样在脚本中增加等待时间?

执行回放录制脚本时失败,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 NotLoginOK
      Wait(2)
      LoginOK=Browser("测试login系统").Page("测试login系统").WebArea("http://10.66.128.6:8080/test/").Click.Exist
      counter=counter+1
      If counter=10Then
                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:38

不是回你了吗?用wait(10)函数啊

chill 发表于 2006-6-26 13:08:03

object.Exist( )
你Exist语法用错了,应该加上括号object.Exist()
                                                         chill

wfq80825 发表于 2006-6-26 13:26:11

加入等待时间有两种方式,一种是同步点,另一种就是wait语句。这两者之间用法上有点技巧,同步点会根据不同情况进行延时,而wait语句中所添加的时间值是固定的。举个生活中的例子,同步点就像你公交车停靠站所花费时间一样是一个不确定值,而wait语句就像地铁停靠站时间一样是一个确定值;
同时注意,添加同步点时不要加错位置,哪个语句出错了,就在哪个语句的前面添加同步点

walker1020 发表于 2006-6-26 15:34:24

根据楼主的描述,我的建议是用同步点,这样肯定能行。如果采用你的第二个方案,等待的时间要足够长。否则遇到网络堵塞或机器的性能不好等情况,你要测试的对象有可能还是出不来。
只要是能解决问题就可以了,不要管是采用了什么方法。用邓小平的一句名言:“不管是白猫,还是黑猫,只要逮住老鼠,就是好猫。”
我不知道楼主发这个帖子是为了解决问题还是想学习怎么使用object.Exist

aprina 发表于 2006-6-26 16:21:59

多谢各位!主要是想学习使用wait这样的方法

这个论坛不错啊。

aprina 发表于 2006-6-26 20:50:51

把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 NotLoginOK
      Wait(2)
      LoginOK=Browser("测试login系统").Page("测试login系统_2").Frame("FrameMain").WebElement("登录/注销").Exist
      counter=counter+1
      If counter=10Then
                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:17

aprina说的对,很有道理! 这是不是你要的结果?

xiaonan 发表于 2006-6-27 10:32:02

希望大家能把解决问题后答案给公布出来,以便让他人学习.谢谢!

mingerp1026 发表于 2006-7-27 16:09:34

aprina 说的很对,我今天遇到同样问题也是这样解决的
谢谢大家分享!
还有点体会,遇到这种情况,我分段录制脚本也是可以的

stq1000 发表于 2006-7-28 15:35:49

哈哈,又学到了一点知识,把我的一个问题也解决了,太好了。。

applebugs 发表于 2006-7-28 22:51:28

回贴

个人认为,只要用wait语句,不是绝对,谁可不可以举例,就此程序而言,怎么用同步来实现?

yylfchl 发表于 2011-10-19 14:32:09

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").TypemicReturn
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:57

WAIT()

SexyCat_1113 发表于 2011-11-2 19:47:03

.Click.Exist
能这样写?

wangyanzhao 发表于 2011-11-3 09:46:15

举个例子:browser("***").sync是等待浏览器加载完成,见右下角有“完成”即可。
页: [1]
查看完整版本: 怎样在脚本中增加等待时间?