51Testing软件测试论坛

标题: 判断某窗口是否存在,脚本运行时间过长。 [打印本页]

作者: 开朗幽默    时间: 2010-7-30 17:54
标题: 判断某窗口是否存在,脚本运行时间过长。
在脚本中使用exits判断某窗口是否存在。当其不存在时,脚本大概要等30S左右才进行下一步。使用了exits(timeout)语句,也没有得到改善。请问有没有别的能够节约时间的方法啊?
作者: yahuu    时间: 2010-7-31 15:18
使用了exist(timeout)语句也没改善,说明不是因为exist的问题

你的exist都打错
作者: dllnetspy    时间: 2010-7-31 21:35
这个时间是没办法加快的,除非是指定的对象提前出来
作者: sterson    时间: 2010-7-31 22:24
楼主可以试一下两种方法
1,是在option里有个可以设置脚本运行超时时间的
2,将运行模式设置为fast
作者: skyzhu    时间: 2010-8-2 09:50
使用 exist(timeout) 需要确保上一层对象存在,否则就会出现等待超长时间的情况
如果不能确保,就一层层exist判断
作者: 开朗幽默    时间: 2010-8-3 09:39
标题: 回复 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
是不是这样?
作者: skyzhu    时间: 2010-8-3 10:54
之前我就是这么做的,必要的地方做一下就行,也不用都这样,如果前面的操作不对上层对象比如browser、page有影响,通过前面的操作,原来在的还是在,不在的还是不在(看脚本逻辑了),那么就用上EXIST(0),执行速度上基本没什么影响的,也避免了卡住的情况

BROWSER(BROWSER).PAGE(PAGE).FRAME(FRAME).WEBLIST(WEBLIST).EXIST
整句解析时,QTP会先找上层对象的
作者: june.diny    时间: 2010-8-3 11:00
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)
作者: sogohu    时间: 2010-8-3 14:30
标题: 回复 1# 的帖子
object.exist(5)  这个是5秒,是强制等待2秒,静态的,即使第2秒已经判断出存在对象,那么依然需要等待5秒钟后才运行

用object.waitproperty("visible",true,10000) 这个是动态等待,10000是毫秒,1000毫秒内只要判断出对象存在,就立即跳转

会快点
作者: 开朗幽默    时间: 2010-8-3 14:35
现在的问题是,对页面的“返回”按钮设置检查点,判断之前的页面上的某个窗口或者某个输入框是否存在,若存在则FAILED,不存在才PASS。它不存在,用EXIST判断要等大概30秒,用“visible”来判断,也要等差不多这么长时间。
作者: skyzhu    时间: 2010-8-3 14:52
标题: 回复 9# 的帖子
2种方式是一样的。。。exist是属性集合而已。都是只要不存在就等。。。。到设置的超时参数为止



楼上几位。。。随便找个页面验证下就知道了,下面的代码,把浏览器全关掉,那个叫慢。。。那样应该就能明白楼主的意思了,楼主就一层层来吧

If Browser("百度一下,你就知道").Page("百度一下,你就知道").WebButton("百度一下").Exist(0) then
        msgbox  1
else
        msgbox 2
end if
作者: 开朗幽默    时间: 2010-8-3 17:02
一层一层地判断也试过了,还是很慢。Setting初始的值是20,算了一下,大概要等30S;改成1之后,等7秒左右。这个是目前最省时的方法。就是不晓得在脚本里边改应该怎么弄。
作者: skyzhu    时间: 2010-8-3 18:02
标题: 回复 12# 的帖子
那就用 exist(0) 吧

其实只要逻辑清楚,才4层最多等1、2秒
外层不存在里面就都不存在了,而存在的话exist是不会等待的
作者: 开朗幽默    时间: 2010-8-4 14:59
标题: 回复 13# 的帖子
存在当然不需要等待,但问题是不存在的嘛。用exist(0)也要等大概30S
作者: xyan    时间: 2010-8-4 15:12
for i=1 to 30
      If Browser("百度一下,你就知道").Page("百度一下,你就知道").WebButton("百度一下").Exist(1) then
         exit for
next

判断一下,如果存在就跳出循环
作者: skyzhu    时间: 2010-8-4 15:14
标题: 回复 14# 的帖子
你自己6楼的帖子就是答案,换成 exist(0)。。。不会等




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