johngan 发表于 2005-10-9 09:42:14

看看这个脚本?

##如果QQ启动了,就关闭它

# Shell_TrayWnd
        define_popup_exception ("closetheqq","close_qq", "win_qq" );
    exception_on("closetheqq");
        set_window ("Shell_TrayWnd", 2);
        toolbar_button_press ("ToolbarWindow32_0", "快捷方式 到 腾讯QQ珊瑚虫版");
    win_wait_info("win_qq","enabled",1,10);

public function close_qq()
{
set_window("win_qq",3);
win_close("win_qq");
}



运行到win_wait_info("win_qq","enabled",1,10);时。为什么QQ窗口关闭了,但是运行标记始终停在这一行。然后系统报出找不到”win_qq"。close_qq()在它的后面啊~

aswoon911 发表于 2005-10-9 09:52:05

把 exception_on("closetheqq");
挪到win_wait_info("win_qq","enabled",1,10)后面再试试,结果报上来

johngan 发表于 2005-10-9 10:05:03

不行啊 ~,弹出了QQ窗口,但是没有关闭,WR也没报错。
exception_on("closetheqq"); 这条语句只能放在toolbar_button_press ("ToolbarWindow32_0", "快捷方式 到 腾讯QQ珊瑚虫版"); 的前面。
我用wait()语句是可以的。

aswoon911 发表于 2005-10-9 10:07:56

哈哈,知道为什么么?你在exception_on("closetheqq"); 后面加一句空操作即可,比如wait(1);也就是说:
define_popup_exception ("closetheqq","close_qq", "win_qq" );

      set_window ("Shell_TrayWnd", 2);
      toolbar_button_press ("ToolbarWindow32_0", "快捷方式 到 腾讯QQ珊瑚虫版");
    win_wait_info("win_qq","enabled",1,10);
exception_on("closetheqq");
wait(1);

再试试

johngan 发表于 2005-10-9 10:15:11

还是关闭不了QQ窗口~老问题啊
不过define_popup_exception ("closetheqq","close_qq", "win_qq" );
    exception_on("closetheqq");
它们本来就关闭错误窗口的,我的这个就是实验下,目的也达到了
谢谢~

aswoon911 发表于 2005-10-9 10:24:18

怪异,这个问题我很早就遇到的,也是exception_on("closetheqq"); 关闭不了窗口.因为当时exception_on("closetheqq")恰好是脚本最后一句,后来尝试再最后加一个wait就可以关闭窗口了.

真是怪异

aswoon911 发表于 2005-10-9 10:37:29

我又try了一下你的脚本,发现同样问题,不过如果这样:
define_popup_exception ("closetheqq","close_qq", "win_qq" );

      set_window ("Shell_TrayWnd", 2);
      toolbar_button_press ("ToolbarWindow32_0", "快捷方式 到 腾讯QQ珊瑚虫版");
##win_wait_info("win_qq","enabled",1,10);
exception_on("closetheqq");
wait(1);

就OK了!

难道win_wait_info对脚本有影响.奇怪啊

aswoon911 发表于 2005-10-9 10:42:05

继续尝试,发现加入检查点win_check_gui也会导致不能关闭窗口,晕晕

johngan 发表于 2005-10-9 10:43:15

看看谁来解释下

aswoon911 发表于 2005-10-9 10:48:07

试想这样一种测试scenario,假如软件运行中会出现几个弹出窗口,这些窗口基本类似,仅某个label或Txt不同,如测试试即需要对窗口进行关闭又需要读取窗口某些内容,这时define_popup_exception难道就没法用了么?

sanqianhooyang 发表于 2005-10-9 11:00:34

Originally posted by aswoon911 at 2005-10-9 10:42:
继续尝试,发现加入检查点win_check_gui也会导致不能关闭窗口,晕晕
我遇到过这种情况,有的时候在脚本的某个地方加入检查点win_check_gui就会报错,这会不会是win_check_gui的使用有什么限制呢?迷茫ing

aswoon911 发表于 2005-10-9 12:18:35

仔细看了Defining and Using Recovery Scenarios一遍,再思考一下,觉得问题是出在我们自己.因为一旦使用了诸如检查点或者同步点后再打开exception_on,可是此时WR已经认为那个窗口已经存在了,就不会触发关闭窗口动作了.

此时如果人工关闭窗口,并再次打开就会被自动关闭了,哈哈

public function close_wrong_message()
{
# 无标题 - 记事本
        win_activate ("notepad");
        set_window("notepad");
        win_check_gui("notepad", "list1.ckl", "gui1", 1);
        win_close ("notepad");

}

exception_off_all;
define_popup_exception ("close_scenario","close_wrong_message", "notepad" );

invoke_application("c:\\windows\\notepad.exe","","",SW_SHOW);
win_wait_info("notepad","enabled",1,1);
win_close ("notepad");
invoke_application("c:\\windows\\notepad.exe","","",SW_SHOW);
exception_on("close_scenario");
wait(2);

道理虽然简单,却也澄清了一些我以前没仔细注意的地方,可喜.

另,加入检查点可以放在关闭窗口的function里就可以顺利执行了.

johngan 发表于 2005-10-9 12:51:25

wait()起什么作用?
加到exception_on("close_scenario");前面和后面有什么区别?

aswoon911 发表于 2005-10-9 13:00:04

wait()没有作用,仅仅告诉WR脚本在执行完exception_on一行后还没结束.否则如果exception_on写成最后一句,脚本执行完这一句就以为脚本运行结束了,你说这时候脚本还会检测弹出窗口么?是否还会触发关闭窗体的function?

johngan 发表于 2005-10-9 14:23:03

这 是SHYFISH在另个帖字中说的,你看看他的说法对不对?
原帖:http://bbs.51testing.com/viewthread.php?tid=5223&fpage=2
正常,因为它叫popup,所以,只有在这个窗口弹出之前加上exception_on才能生效,你窗口都出来了才执行exception_on,叫它怎么执行呢?应该这样:
1。定义
2。加上exception_on语句
3。打开窗口,结果就自动关闭了
。。。。。。

aswoon911 发表于 2005-10-9 14:35:20

这不是问题的所在, 那个帖子不能解释如下情况:

public function close_wrong_message()
{
      win_activate ("notepad");
      set_window("notepad");
      win_close ("notepad");
}

define_popup_exception ("close_scenario","close_wrong_message", "notepad" );
invoke_application("c:\\windows\\notepad.exe","","",SW_SHOW);
exception_on("close_scenario");
wait(2);


注意: 这一段脚本能够正确执行也能够正确关闭notepad.
如果去掉末尾的wait(2);就不能关闭notepad!

exception_on当然要在窗口出现之前就得执行好,这没有疑问啊.

现在的问题是为何加了wait就能执行关闭而不加就不能关闭.

[ Last edited by aswoon911 on 2005-10-9 at 14:38 ]

aswoon911 发表于 2005-10-9 14:41:18

当然正常使用的时候脚本是不会象这个sample那样写的,我只是在一次很偶然的机会碰到这个情况,我把sample写成那样只是想测试一下如何能执行下去,为何不加wait就不能执行这个原因.............

[ Last edited by aswoon911 on 2005-10-9 at 14:44 ]
页: [1]
查看完整版本: 看看这个脚本?