51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 8398|回复: 25
打印 上一主题 下一主题

高手请进!

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2004-12-24 16:52:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有一个程序启动时,有一个静态文本,根据情况的不同,静态文本会有三种情况,做不同的事情
1.无任何文本
2.显示"could contact sever"
3.显示" network connectivity lost"
我的要求是,
              如果无显示,无操作.
               如果显示"could contact sever",把文字could contact sever写入report,重新启动程序.
               如果显示"network connectivity lost",把文字network connectivity lost写入report,重新启动程序
请大家来帮忙啊
MSN:lousia_qian@hotmail.com
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏

该用户从未签到

2#
 楼主| 发表于 2004-12-26 00:01:25 | 只看该作者
Originally posted by lousia at 2004-12-24 04:52 PM:
有一个程序启动时,有一个静态文本,根据情况的不同,静态文本会有三种情况,做不同的事情
1.无任何文本
2.显示"could contact sever"
3.显示" network connectivity lost"
我的要求是,
   ...

研究了一天,终于写了下面程序,可还是不对,这是我第一次不用录制方法在winrunner写程序.不知道哪里错了,给我点建议吧
for(i=1;i<=3;i++)
{
invoke_application("C:\\Program Files\\TelTel\\TelTel.exe","","C:\\Program Files\\TelTel\\",SW_RESTORE);
wait(15);
if(obj_exists(Button_9 ,5)!=E_OK)
{
# No text was found
set_window("TelTel Beta", 1);
obj_get_text("(static)", text);
if(text=="Could not contact server."||text=="Network connectivity lost.")
{
report_msg(i);
report_msg(text);
call "D:\\winrunnerTSLdownload\\test case\\exit"();
}
}
else
{
report_msg(i);
report_msg("success");
call "D:\\winrunnerTSLdownload\\test case\\exit"();
}
}


comment:if(obj_exists(Button_9 ,5)!=E_OK) #如果运行成功,用butten按钮作为判断检查,如果button不存在,检查一个LABLE上的text,根据文字的不同做不同的操作,
做这个程序的意图是:
运行TELTEL.我正常启动 teltel 登陆时remember me  check,tip of the day not check 如果网络情况正常,登陆成功,如果网络不正常,推出程序,重新启动.

TELTEL下载地址: www.teltel.com
请斑竹一定要帮帮我啊.
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2004-12-26 22:41:30 | 只看该作者
由于我实在打不开你的那个TELTEL!
所以只能拿MSN试了一下可以的!
那三种情况你只能自己写条件了!
这个是自己的初步!
供你参考一下!


static app_name="C:\\Program Files\\MSN Messenger\\msnmsgr.exe";
        if(invoke_application(app_name,"","",SW_SHOW)!=0) # 如果程序不存在则退出测试
        {
                report_msg("如果测试的程序不存在,测试退出.");  # 返回一个提示信息
                texit;
# MSN Messenger (BETA)
        set_window ("MSN Messenger (BETA)", 0);
        obj_mouse_click ("DirectUIHWND", 145, 190, LEFT);

# 登录到 .NET Messenger Service - MSN Messenger (BETA)
        set_window ("登录到 .NET Messenger Service - MSN Messenger (BETA)", 9);
        password_edit_set("密码(P):", "lbziwmz");
        button_press ("确定");
    wait(12);
# MSN Messenger (BETA)
        set_window("MSN Messenger (BETA)", 14);
        obj_check_bitmap("DirectUIHWND_1", "Img2", 1);
        set_window ("MSN Messenger (BETA)", 2);
        obj_check_info("DirectUIHWND_1","enabled",1,10);
        rc=obj_mouse_click ("DirectUIHWND_1", 130, 75, LEFT);
        if (rc = E_OK)
                        {
                          report_msg("用户名验证", PASS, "正常登陆");
                          texit;
                                 }
                else
                        {
                           report_msg("用户名验证", FAIL, "不正常登陆");
                           win_close("MSN Messenger (BETA)");
                                                              }
然后再统计有多少成功和不成功
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2004-12-27 09:40:03 | 只看该作者
你的obj_get_text是录制的吧?从
# No text was found
set_window("TelTel Beta", 1);
obj_get_text("(static)", text);
这三句来看,应该是自动生成的,然后WR自己报说# No text was found,也就是obj_get_text并没有获取到文本,这应该就是问题所在了……
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2004-12-27 10:35:34 | 只看该作者
Originally posted by shyfish at 2004-12-27 09:40 AM:
你的obj_get_text是录制的吧?从
# No text was found
set_window("TelTel Beta", 1);
obj_get_text("(static)", text);
这三句来看,应该是自动生成的,然后WR自己报说# No text was f ...

是用insert-get text-From object/window获得的,你有办法吗?我不知道怎么获得.
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2004-12-27 11:21:47 | 只看该作者
你要看LOGIN之前与之后有什么驱别,这样就可以做到你想要的500次了!
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2004-12-27 12:09:49 | 只看该作者
Originally posted by lousia at 2004-12-27 10:35 AM:

是用insert-get text-From object/window获得的,你有办法吗?我不知道怎么获得.

set_window("TelTel Beta", 1);
obj_get_text("{ class: static_text, MSW_id: 2}", text);
if(text=="Could not contact server."||text=="Network connectivity lost.")
我用这个方法来判断的,可以正常通过,也实现了我要的目的
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2004-12-27 12:18:02 | 只看该作者
Originally posted by QA_BAY at 2004-12-26 10:41 PM:
由于我实在打不开你的那个TELTEL!
所以只能拿MSN试了一下可以的!
那三种情况你只能自己写条件了!
这个是自己的初步!
供你参考一下!


static app_name="C:\\Program Files\\MSN Messenger\\msnmsgr. ...


for(i=1;i<=5;i++)
{
invoke_application("C:\\Program Files\\TelTel\\TelTel.exe","","C:\\Program Files\\TelTel\\",SW_RESTORE);
wait(20);
if(obj_exists("Button_1")==E_OK)#用TELTEL程序上出现一个Button_1来判断登陆成功,,这里可能有问题,因为不管登陆成功不成功,obj_exists("Button_1")==E_OK都是否定的,下面的代码永远执行不了,直接调到ELSE去做了,请大家给点建议
{
report_msg(i);
report_msg("success");
wait(2);
invoke_application("D:\\FXProtect\\FXProtect.exe","","D:\\FXProtect",SW_HIDE););#通过调用FXProtect.exe来关闭TELTEL的进程来关闭程序.

wait(5);
}
else
{
set_window("TelTel Beta", 1);
obj_get_text("{ class: static_text, MSW_id: 2}", text);
if(text=="Could not contact server."||text=="Network connectivity lost.")
{
report_msg(i);
report_msg(text);
wait(2);
invoke_application("D:\\FXProtect\\FXProtect.exe","","D:\\FXProtect",SW_HIDE);#通过调用FXProtect.exe来关闭TELTEL的进程来关闭程序.
wait(3);
}
}


}
写了上诉程序,如果出现Could not contact server和Network connectivity lost
能判断出这两种情况了
QA_BAY一定要给点建议啊,你说的
obj_check_bitmap("Online Status", "Img2", 1);
obj_check_info("Online Status","enabled",1,10);
        rc=obj_mouse_click("Online Status", "5", "51", LEFT);
        if (rc = E_OK)
这两条语句我还用不来.obj_check_info("Online Status","enabled",1,10);
        rc=obj_mouse_click("Online Status", "5", "51", LEFT);
回复 支持 反对

使用道具 举报

该用户从未签到

9#
 楼主| 发表于 2004-12-27 12:25:01 | 只看该作者
Originally posted by QA_BAY at 2004-12-27 11:21 AM:
你要看LOGIN之前与之后有什么驱别,这样就可以做到你想要的500次了!

我是区别了啊,登陆成功的话,通过屏幕上出现一个Buttom_1.
                  如果Buttom_1,不存在,检查一个文本上写的东西,
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2004-12-27 12:58:43 | 只看该作者
if(obj_exists("Button_1"==E_OK)#用TELTEL程序上出现一个Button_1来判断登陆成功,,这里可能有问题,因为不管登陆成功不成功,obj_exists("Button_1"==E_OK都是否定的,下面的代码永远执行不了,直接调到ELSE去做了,请大家给点建议

刚才下载了TELTEL,还是不行,不知道怎么搞的!
LOING很慢,还有显示network connectivily lost


现在你知道错在哪里的话,那就改一下试试!
If (button_get_info("Button_1","enabled",val)!=E_OK)
        if (val!=0)
   report_msg("i");
   report_msg("success");
   wait(2);
   invoke_application("D:\\FXProtect\\FXProtect.exe","","D:\\FXProtect",SW_HIDE)
button_get_info(返回按钮属性的值)在insert ---funciton---from fuction generator里面.

[ Last edited by QA_BAY on 2004-12-27 at 13:01 ]
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2004-12-27 17:54:29 | 只看该作者
你的obj_exists("Button_1"==E_OK)这个Button_1是虚拟的按钮吗?如果是,那么无论这个按钮是否存在,obj_exists("Button_1"==E_OK)返回的都是FALSE,即没有找到。如果不是虚拟的,那么这句语句应该是可以正常工作的
回复 支持 反对

使用道具 举报

该用户从未签到

12#
 楼主| 发表于 2004-12-28 01:06:04 | 只看该作者
Originally posted by shyfish at 2004-12-27 05:54 PM:
你的obj_exists("Button_1"==E_OK)这个Button_1是虚拟的按钮吗?如果是,那么无论这个按钮是否存在,obj_exists("Button_1"==E_OK)返回的都是FALSE,即没有找到。如果不是虚拟的,那么这句语 ...

我看了一下,确实是这个问题,同一个button每次启动后,名字都会变,一会button_1,一会button_11,一会button_4的,我的窗口上有好几个Button因该怎么处理呢?
于是我用if(obj_exists("{class: push_button,MSW_id: 1002}")!=E_OK)来判断,它还是找不到,我该怎么处理呢?同样性质的问题,我用set_window("TelTel Beta", 1);
obj_get_text("{ class: static_text, MSW_id: 2}", text);
if(text=="Could not contact server."||text=="Network connectivity lost.")
能正常判断,我想可能是static_text的原因,但是这个Button,怎么来判断呢?
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2004-12-28 08:17:15 | 只看该作者
如果是BUTTON,那应该可以把MSW_ID去掉,
你可以这样,在EDIT MAP GUI 里面看一下BOTTON这个的属性!看一下有没有MSW_ID.如果有就要到GUI CONFIGURATION那里去掉!
这就MSW_ID就不会变来变去的啦!
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2004-12-28 09:23:43 | 只看该作者
呵呵,如果显示为button_1或button_11并在变化的就说明它能够正确识别成按钮,而你也没有把它做成虚拟控件了。而不成功的原因是它的ID一直在变了,自然每次都找不到了,用楼上版主的方法吧,如果不行再加一个location的属性看一下可不可以
回复 支持 反对

使用道具 举报

该用户从未签到

15#
 楼主| 发表于 2004-12-28 10:48:10 | 只看该作者
Originally posted by lousia at 2004-12-24 04:52 PM:
有一个程序启动时,有一个静态文本,根据情况的不同,静态文本会有三种情况,做不同的事情
1.无任何文本
2.显示"could contact sever"
3.显示" network connectivity lost"
我的要求是,
   ...

这个问题最终还是解决了,我找到了一个登陆成功的Tip of the day窗口来判断.
if(win_exists("Tip of the day")==E_OK) 问题解决了,老板要的结果得到了.
回复 支持 反对

使用道具 举报

该用户从未签到

16#
发表于 2004-12-28 11:32:09 | 只看该作者
问题解决,非常开心!
工资不会给老板扣掉是不是应该拿出一部分出来请大家吃饭呢?哈哈哈
回复 支持 反对

使用道具 举报

该用户从未签到

17#
 楼主| 发表于 2004-12-28 12:12:22 | 只看该作者
Originally posted by QA_BAY at 2004-12-28 11:33 AM:
问题解决,非常开心!
工资不会给老板扣掉是不是应该拿出一部分出来请大家吃饭呢?哈哈哈

好啊,你哪天来上海和我说一下.
回复 支持 反对

使用道具 举报

该用户从未签到

18#
 楼主| 发表于 2004-12-28 12:56:56 | 只看该作者
Originally posted by QA_BAY at 2004-12-28 08:17 AM:
如果是BUTTON,那应该可以把MSW_ID去掉,
你可以这样,在EDIT MAP GUI 里面看一下BOTTON这个的属性!看一下有没有MSW_ID.如果有就要到GUI CONFIGURATION那里去掉!
这就MSW_ID就不会变来变去的啦!

我是这样修改的,但还是不能判断.
用GUI Spy看出Dial 按钮具有{class: object,MSW_id:MSW_class: Button}
选择Tools->GUI Map Configuration->object->configuration修改把MSW_id去掉后变成{class: object,MSW_class: Button,location: 10},
然后用if (obj_exists("Button_10")==E_OK) 去判别还是不能判断啊???

D:\\pic.jpg

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复 支持 反对

使用道具 举报

该用户从未签到

19#
发表于 2004-12-28 17:34:17 | 只看该作者
你要重新录制一下脚本,由于你那个属性的改变不是永久的,
你所做的只是在没有关闭WR之前有效,如果关闭了就无效了,
所以你要做长久的,
就是在起动脚本(LIB)里加两行TSL.
在论坛里有,你找一下吧.

[ Last edited by QA_BAY on 2004-12-28 at 17:36 ]
回复 支持 反对

使用道具 举报

该用户从未签到

20#
发表于 2004-12-28 17:36:33 | 只看该作者
看你的GUI里面那些Button都是object,而不是push_button(图标和class都说明它是object),怎么不是push_button呢?我试过Button(非虚拟的)和static text都可以用obj_exists作出正确的判断
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-5-12 06:08 , Processed in 0.103906 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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