高手请进!
有一个程序启动时,有一个静态文本,根据情况的不同,静态文本会有三种情况,做不同的事情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 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 mecheck,tip of the day not check 如果网络情况正常,登陆成功,如果网络不正常,推出程序,重新启动.
TELTEL下载地址: www.teltel.com
请斑竹一定要帮帮我啊. 由于我实在打不开你的那个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)");
}
然后再统计有多少成功和不成功 你的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并没有获取到文本,这应该就是问题所在了…… 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获得的,你有办法吗?我不知道怎么获得. 你要看LOGIN之前与之后有什么驱别,这样就可以做到你想要的500次了! 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.")
我用这个方法来判断的,可以正常通过,也实现了我要的目的 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); Originally posted by QA_BAY at 2004-12-27 11:21 AM:
你要看LOGIN之前与之后有什么驱别,这样就可以做到你想要的500次了!
我是区别了啊,登陆成功的话,通过屏幕上出现一个Buttom_1.
如果Buttom_1,不存在,检查一个文本上写的东西, 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 ] 你的obj_exists("Button_1"==E_OK)这个Button_1是虚拟的按钮吗?如果是,那么无论这个按钮是否存在,obj_exists("Button_1"==E_OK)返回的都是FALSE,即没有找到。如果不是虚拟的,那么这句语句应该是可以正常工作的 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,怎么来判断呢? 如果是BUTTON,那应该可以把MSW_ID去掉,
你可以这样,在EDIT MAP GUI 里面看一下BOTTON这个的属性!看一下有没有MSW_ID.如果有就要到GUI CONFIGURATION那里去掉!
这就MSW_ID就不会变来变去的啦! 呵呵,如果显示为button_1或button_11并在变化的就说明它能够正确识别成按钮,而你也没有把它做成虚拟控件了。而不成功的原因是它的ID一直在变了,自然每次都找不到了,用楼上版主的方法吧,如果不行再加一个location的属性看一下可不可以 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) 问题解决了,老板要的结果得到了. 问题解决,非常开心!
工资不会给老板扣掉是不是应该拿出一部分出来请大家吃饭呢?哈哈哈 Originally posted by QA_BAY at 2004-12-28 11:33 AM:
问题解决,非常开心!
工资不会给老板扣掉是不是应该拿出一部分出来请大家吃饭呢?哈哈哈
好啊,你哪天来上海和我说一下. 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 你要重新录制一下脚本,由于你那个属性的改变不是永久的,
你所做的只是在没有关闭WR之前有效,如果关闭了就无效了,
所以你要做长久的,
就是在起动脚本(LIB)里加两行TSL.
在论坛里有,你找一下吧.
[ Last edited by QA_BAY on 2004-12-28 at 17:36 ] 看你的GUI里面那些Button都是object,而不是push_button(图标和class都说明它是object),怎么不是push_button呢?我试过Button(非虚拟的)和static text都可以用obj_exists作出正确的判断
页:
[1]
2