判断某窗口是否存在,脚本运行时间过长。
在脚本中使用exits判断某窗口是否存在。当其不存在时,脚本大概要等30S左右才进行下一步。使用了exits(timeout)语句,也没有得到改善。请问有没有别的能够节约时间的方法啊? 使用了exist(timeout)语句也没改善,说明不是因为exist的问题你的exist都打错 这个时间是没办法加快的,除非是指定的对象提前出来 楼主可以试一下两种方法
1,是在option里有个可以设置脚本运行超时时间的
2,将运行模式设置为fast 使用 exist(timeout) 需要确保上一层对象存在,否则就会出现等待超长时间的情况
如果不能确保,就一层层exist判断
回复 5# 的帖子
那你的意思是如果脚本中存在Browser、Page、Frame、weblist几层对象,需要对这几层对象分别用exist来判断?脚本不是会很复杂?IF BROWSER(BROWSER).EXIST THEN
IF BROWSER(BROWSER).PAGE(PAGE).EXIST THEN
IF BROWSER(BROWSER).PAGE(PAGE).FRAME(FRAME).EXIST THEN
IF BROWSER(BROWSER).PAGE(PAGE).FRAME(FRAME).WEBLIST(WEBLIST).EXIST THEN
是不是这样? 之前我就是这么做的,必要的地方做一下就行,也不用都这样,如果前面的操作不对上层对象比如browser、page有影响,通过前面的操作,原来在的还是在,不在的还是不在(看脚本逻辑了),那么就用上EXIST(0),执行速度上基本没什么影响的,也避免了卡住的情况
BROWSER(BROWSER).PAGE(PAGE).FRAME(FRAME).WEBLIST(WEBLIST).EXIST
整句解析时,QTP会先找上层对象的 1、要确认这个窗口的出现与否,是否影响下一步的执行?
2、如果不影响,直接可以执行下一步,可以在脚本中加一个计时器+公共变量(timeout),例如:
dim time_out
time_out=10 '以秒为单位,可以放到公共变量中
time_tag=Time() '开始计时
Do While (Time()-time_tag)*24*3600 < timeout
....
Loop
当然,也可以通过设置qtp setting,缩短判断对象是否出现的时间(File-Setting-Run)
回复 1# 的帖子
object.exist(5)这个是5秒,是强制等待2秒,静态的,即使第2秒已经判断出存在对象,那么依然需要等待5秒钟后才运行用object.waitproperty("visible",true,10000) 这个是动态等待,10000是毫秒,1000毫秒内只要判断出对象存在,就立即跳转
会快点 现在的问题是,对页面的“返回”按钮设置检查点,判断之前的页面上的某个窗口或者某个输入框是否存在,若存在则FAILED,不存在才PASS。它不存在,用EXIST判断要等大概30秒,用“visible”来判断,也要等差不多这么长时间。
回复 9# 的帖子
2种方式是一样的。。。exist是属性集合而已。都是只要不存在就等。。。。到设置的超时参数为止楼上几位。。。随便找个页面验证下就知道了,下面的代码,把浏览器全关掉,那个叫慢。。。那样应该就能明白楼主的意思了,楼主就一层层来吧
If Browser("百度一下,你就知道").Page("百度一下,你就知道").WebButton("百度一下").Exist(0) then
msgbox1
else
msgbox 2
end if 一层一层地判断也试过了,还是很慢。Setting初始的值是20,算了一下,大概要等30S;改成1之后,等7秒左右。这个是目前最省时的方法。就是不晓得在脚本里边改应该怎么弄。
回复 12# 的帖子
那就用 exist(0) 吧其实只要逻辑清楚,才4层最多等1、2秒
外层不存在里面就都不存在了,而存在的话exist是不会等待的
回复 13# 的帖子
存在当然不需要等待,但问题是不存在的嘛。用exist(0)也要等大概30S for i=1 to 30If Browser("百度一下,你就知道").Page("百度一下,你就知道").WebButton("百度一下").Exist(1) then
exit for
next
判断一下,如果存在就跳出循环
回复 14# 的帖子
你自己6楼的帖子就是答案,换成 exist(0)。。。不会等
页:
[1]