看看这个脚本?
##如果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()在它的后面啊~ 把 exception_on("closetheqq");
挪到win_wait_info("win_qq","enabled",1,10)后面再试试,结果报上来 不行啊 ~,弹出了QQ窗口,但是没有关闭,WR也没报错。
exception_on("closetheqq"); 这条语句只能放在toolbar_button_press ("ToolbarWindow32_0", "快捷方式 到 腾讯QQ珊瑚虫版"); 的前面。
我用wait()语句是可以的。 哈哈,知道为什么么?你在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);
再试试 还是关闭不了QQ窗口~老问题啊
不过define_popup_exception ("closetheqq","close_qq", "win_qq" );
exception_on("closetheqq");
它们本来就关闭错误窗口的,我的这个就是实验下,目的也达到了
谢谢~ 怪异,这个问题我很早就遇到的,也是exception_on("closetheqq"); 关闭不了窗口.因为当时exception_on("closetheqq")恰好是脚本最后一句,后来尝试再最后加一个wait就可以关闭窗口了.
真是怪异 我又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对脚本有影响.奇怪啊 继续尝试,发现加入检查点win_check_gui也会导致不能关闭窗口,晕晕 看看谁来解释下 试想这样一种测试scenario,假如软件运行中会出现几个弹出窗口,这些窗口基本类似,仅某个label或Txt不同,如测试试即需要对窗口进行关闭又需要读取窗口某些内容,这时define_popup_exception难道就没法用了么? Originally posted by aswoon911 at 2005-10-9 10:42:
继续尝试,发现加入检查点win_check_gui也会导致不能关闭窗口,晕晕
我遇到过这种情况,有的时候在脚本的某个地方加入检查点win_check_gui就会报错,这会不会是win_check_gui的使用有什么限制呢?迷茫ing 仔细看了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里就可以顺利执行了. wait()起什么作用?
加到exception_on("close_scenario");前面和后面有什么区别? wait()没有作用,仅仅告诉WR脚本在执行完exception_on一行后还没结束.否则如果exception_on写成最后一句,脚本执行完这一句就以为脚本运行结束了,你说这时候脚本还会检测弹出窗口么?是否还会触发关闭窗体的function? 这 是SHYFISH在另个帖字中说的,你看看他的说法对不对?
原帖:http://bbs.51testing.com/viewthread.php?tid=5223&fpage=2
正常,因为它叫popup,所以,只有在这个窗口弹出之前加上exception_on才能生效,你窗口都出来了才执行exception_on,叫它怎么执行呢?应该这样:
1。定义
2。加上exception_on语句
3。打开窗口,结果就自动关闭了
。。。。。。 这不是问题的所在, 那个帖子不能解释如下情况:
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 ] 当然正常使用的时候脚本是不会象这个sample那样写的,我只是在一次很偶然的机会碰到这个情况,我把sample写成那样只是想测试一下如何能执行下去,为何不加wait就不能执行这个原因.............
[ Last edited by aswoon911 on 2005-10-9 at 14:44 ]
页:
[1]