51Testing软件测试论坛

标题: [原创]在WR7.6里对异常窗口的一种解决方法 [打印本页]

作者: 生如火花    时间: 2004-11-23 23:12
标题: [原创]在WR7.6里对异常窗口的一种解决方法
类似7.0的异常处理功能,7.6把exception handling做成了函数,对于一个我们能肯定它会出现,但不知道它什么时候会出现的窗口,在脚本中可以用exception进行解决

假设异常的窗口是QQ程序,首先保证GUI MAP Editor能把窗体learn到。
在map里,它是
{
class: window,
label: " ",
MSW_class: "#32770"
}
先把窗体的logical name改成win_qq,

然后添上这么一段脚本:
##如果QQ启动了,就关闭它
define_popup_exception ("closetheqq","close_qq", "win_qq" );
public function close_qq()
{
set_window("win_qq",3);
win_close("win_qq");
}
exception_on("closetheqq");

这样,一旦出现了QQ的窗口,WR就会自动的关闭他,这与7.0里的异常处理是有相通处的。并且,你可以在close_qq这样的函数里添加标记,记录出错次数。然后用report报告出来
作者: sunhongdongkun    时间: 2004-12-8 09:04
呵呵  好东西
作者: fzyerma    时间: 2004-12-8 20:25
不错
作者: willcheung    时间: 2005-1-18 12:28
我试了怎么不行啊?
define_popup_exception ("closethemb","close_mb", "**计算软件" );
public function close_mb()
{
set_window("**计算软件",3);

win_close("**计算软件");
}
exception_on("closethemb");
我执行后**计算软件窗口没有关掉阿,但是我仅执行以下语句时可以关掉该窗口
set_window("**计算软件",3);

win_close("**计算软件");
请问,define_popup_exception()监测异常窗口并处理,到底是怎么用的?起什么作用?
作者: shyfish    时间: 2005-1-18 12:58
正常,因为它叫popup,所以,只有在这个窗口弹出之前加上exception_on才能生效,你窗口都出来了才执行exception_on,叫它怎么执行呢?应该这样:
1。定义
2。加上exception_on语句
3。打开窗口,结果就自动关闭了
。。。。。。
作者: 生如火花    时间: 2005-1-18 14:56
注意脚本位置,TSL是从上执行到下的。这个处理只对它后面发生的动作起作用
作者: willcheung    时间: 2005-1-18 16:03
Success!!哈哈,谢谢!!今天我都在看你的贴,以后有什么不懂的请多多指教哦
作者: dyjyhx    时间: 2005-1-20 10:37
没有看明白。请高手在指点一、二。先谢谢了

类似7.0的异常处理功能,7.6把exception handling做成了函数,对于一个我们能肯定它会出现,但不知道它什么时候会出现的窗口,在脚本中可以用exception进行解决

假设异常的窗口是QQ程序,首先保证GUI MAP Editor能把窗体learn到。
在map里,它是
{
class: window,
label: " ",
MSW_class: "#32770"
}
先把窗体的logical name改成win_qq,

然后添上这么一段脚本:
##如果QQ启动了,就关闭它
define_popup_exception ("closetheqq","close_qq", "win_qq" );
public function close_qq()
{
set_window("win_qq",3);
win_close("win_qq");
}
exception_on("closetheqq");

这样,一旦出现了QQ的窗口,WR就会自动的关闭他,这与7.0里的异常处理是有相通处的。并且,你可以在close_qq这样的函数里添加标记,记录出错次数。然后用report报告出来

----------------------------------------------------------------------
这里提到的“假设异常的窗口是QQ程序,首先保证GUI MAP Editor能把窗体learn到。 ”learn窗体是learnQQ出现异常的哪个窗体还是QQ本身的窗体?

还有注释中说道##如果QQ启动了,就关闭它
这个启动是QQ程序启动了,还是QQ异常窗口启动了?
作者: dyjyhx    时间: 2005-1-20 10:41
willcheung,能把你成功的脚本贴出来吗?谢谢了。
作者: 生如火花    时间: 2005-1-20 16:32
这说的是把QQ程序看做是异常出现的窗口
作者: dyjyhx    时间: 2005-1-21 10:28
我找一个异常窗口试试看,先谢谢了
作者: dyjyhx    时间: 2005-1-21 11:18
代码是不是应该这样
# Flight Reservation
        win_activate ("Flight Reservation");
        set_window ("Flight Reservation", 2);
       
    define_popup_exception ("closethe_Open_Order","close_Open_Order", "Open Order" );

   
    exception_on("closethe_Open_Order");
# Open Order
    menu_select_item ("File;Open Order...");

    public function close_Open_Order()
    {
       set_window("Open Order",3);
       win_close("Open Order");
    }


在执行后,有时会关不掉Open Order窗口,结果中显示closethe_Open_Order找不到。但有时能关掉,这是什么原因。请高手指点
作者: dyjyhx    时间: 2005-1-21 11:39
Windows弹出的异常窗口,象什么“指令错误,内存不能为“Read””的那种异常窗口,WinRunner就不能Learn它的窗口,还能用这种方法处理吗?
作者: dyjyhx    时间: 2005-1-24 14:05
楼主怎么不来看一看呀?
作者: 生如火花    时间: 2005-1-24 15:26
我说了,前提是WR能learn到这个窗口,不能learn的不可以用这个方法解决。
作者: 生如火花    时间: 2005-1-24 15:30
Originally posted by 生如火花 at 2005-1-18 02:56 PM:
注意脚本位置,TSL是从上执行到下的。这个处理只对它后面发生的动作起作用
在执行后,有时会关不掉Open Order窗口,结果中显示closethe_Open_Order找不到。但有时能关掉,这是什么原因。请高手指点

确认一下情况。
作者: dyjyhx    时间: 2005-1-24 15:44
谢谢楼主,明白了
作者: mojinde    时间: 2005-1-25 15:50
标题: 请问楼主
如果那个异常窗口learn不到的话,也就是在测试时,并不能预知异常窗口的出现,又用什么方法呢?谢谢指教!
作者: 生如火花    时间: 2005-1-25 16:31
我不是神
作者: mojinde    时间: 2005-1-25 17:05
生如火花,我知道你行的:p,谢谢这段时间以来,你给我的帮助,真的很感谢。

[ Last edited by mojinde on 2005-1-25 at 17:08 ]
作者: hihihaha910    时间: 2005-8-13 09:32
生如火花最近去哪里了?怎么都没声音了,我们需要你~
作者: yangkinki    时间: 2005-8-16 17:16
不错,学习到异常处理
作者: PK_DUTBSK    时间: 2005-8-17 09:42
问个问题 :  如果GUI MAP Editor不能把窗体learn到 怎么办?
作者: kelly651    时间: 2005-8-25 14:24
期望有更多的这方面的脚本代码贴出来.....
作者: bugweb    时间: 2006-6-7 14:17
标题: 厉害
不错,受益匪浅
作者: ljy    时间: 2006-6-13 15:49
又长知识了~~~~~
作者: nkillers    时间: 2006-6-26 16:23
peifu !~~~~~~~~~~~~~~~~
作者: xihong2004    时间: 2006-9-10 12:59
高,学到一招
作者: 84554577    时间: 2006-10-25 17:08
上面的我好像没有弄懂呢?
因为代码就那点点,我一执行马上都跑完了!他怎么来关闭我的QQ呀!
不管我的QQ是在什么时候打开,都没有被关闭!所以请高手指点!
作者: xiaogougou    时间: 2006-12-1 10:07
原帖由 84554577 于 2006-10-25 17:08 发表
上面的我好像没有弄懂呢?
因为代码就那点点,我一执行马上都跑完了!他怎么来关闭我的QQ呀!
不管我的QQ是在什么时候打开,都没有被关闭!所以请高手指点!


你可以在楼主的代码后面加一句
wait(10);
执行程序后马上就打开QQ,程序就会关闭QQ了。因为这个捕捉异常是在脚本运行过程中捕捉的
,如果不加别的代码,等程序都执行完了,QQ还没出现,当然捕捉不到了。
作者: yy100t    时间: 2008-6-19 15:57
路过 来学习的  看得晕忽忽的




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