51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3089|回复: 16
打印 上一主题 下一主题

看看这个脚本?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 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()在它的后面啊~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2005-10-9 09:52:05 | 只看该作者
把 exception_on("closetheqq");
挪到win_wait_info("win_qq","enabled",1,10)后面再试试,结果报上来
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2005-10-9 10:05:03 | 只看该作者
不行啊 ~,弹出了QQ窗口,但是没有关闭,WR也没报错。
exception_on("closetheqq"); 这条语句只能放在toolbar_button_press ("ToolbarWindow32_0", "快捷方式 到 腾讯QQ珊瑚虫版"); 的前面。
我用wait()语句是可以的。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 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);

再试试
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2005-10-9 10:15:11 | 只看该作者
还是关闭不了QQ窗口~老问题啊
不过define_popup_exception ("closetheqq","close_qq", "win_qq" );
    exception_on("closetheqq");
它们本来就关闭错误窗口的,我的这个就是实验下,目的也达到了
谢谢~
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2005-10-9 10:24:18 | 只看该作者
怪异,这个问题我很早就遇到的,也是exception_on("closetheqq"); 关闭不了窗口.因为当时exception_on("closetheqq")恰好是脚本最后一句,后来尝试再最后加一个wait就可以关闭窗口了.

真是怪异
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 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对脚本有影响.奇怪啊
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2005-10-9 10:42:05 | 只看该作者
继续尝试,发现加入检查点win_check_gui也会导致不能关闭窗口,晕晕
回复 支持 反对

使用道具 举报

该用户从未签到

9#
 楼主| 发表于 2005-10-9 10:43:15 | 只看该作者
看看谁来解释下
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2005-10-9 10:48:07 | 只看该作者
试想这样一种测试scenario,假如软件运行中会出现几个弹出窗口,这些窗口基本类似,仅某个label或Txt不同,如测试试即需要对窗口进行关闭又需要读取窗口某些内容,这时define_popup_exception难道就没法用了么?
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 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
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 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里就可以顺利执行了.
回复 支持 反对

使用道具 举报

该用户从未签到

13#
 楼主| 发表于 2005-10-9 12:51:25 | 只看该作者
wait()起什么作用?
加到exception_on("close_scenario");前面和后面有什么区别?
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2005-10-9 13:00:04 | 只看该作者
wait()没有作用,仅仅告诉WR脚本在执行完exception_on一行后还没结束.否则如果exception_on写成最后一句,脚本执行完这一句就以为脚本运行结束了,你说这时候脚本还会检测弹出窗口么?是否还会触发关闭窗体的function?
回复 支持 反对

使用道具 举报

该用户从未签到

15#
 楼主| 发表于 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。打开窗口,结果就自动关闭了
。。。。。。
回复 支持 反对

使用道具 举报

该用户从未签到

16#
发表于 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 ]
回复 支持 反对

使用道具 举报

该用户从未签到

17#
发表于 2005-10-9 14:41:18 | 只看该作者
当然正常使用的时候脚本是不会象这个sample那样写的,我只是在一次很偶然的机会碰到这个情况,我把sample写成那样只是想测试一下如何能执行下去,为何不加wait就不能执行这个原因.............

[ Last edited by aswoon911 on 2005-10-9 at 14:44 ]
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-26 13:44 , Processed in 0.086319 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表