51Testing软件测试论坛

标题: 调用另外一个脚本时,参数传不过来 [打印本页]

作者: fengyun407    时间: 2007-1-27 12:07
标题: 调用另外一个脚本时,参数传不过来
第二种情况:调用另一个脚本,传递参数并需要多个脚本的返回值

对脚本进行参数的传递和返回需要在脚本属性中进行设置,具体操作是新建一个子脚本notepadinput在File-〉Test properties 在弹出的提示框中选择Parameters页签,这里可以设置这个脚本中的传入参数和传出参数。我们在“input parameters”中新建两个参数:notepadinput1,notepadinput2(最好给出描述),在“output parameters”中新建两个参数:result1,result2。保存设置并推出,接下来开始对主脚本main和子脚本notepadinput进行编辑。

主脚本:main

###########################################################################

GUI_close_all();
if (GUI_load(".\\notepad.gui")!=0)
{
report_msg("gui load error");
}
else
{
report_msg("gui load ok");
}


if (invoke_application("c:\\windows\\system32\\notepad.exe","","",SW_SHOW)!=0)
{
  report_msg("notepad error");
}
else
{
  report_msg("notepad ok");
}

re1 = call ".\\notepadinputscrīpt"(1,2);

pause (result1);
pause (result2);

#与第一种情况的不同之处就是call语句需要传递参数了,括号中的1,2分别对应我们在notepadinput脚本设置中新建的两个input parameters:notepadinput1,notepadinput2。下面的弹出框分别显示notepadinput中的两个output parameters:result1,result2。

###########################################################################

接下来我们看看子脚本notepadinput是怎样处理传入和返回参数的:

###########################################################################


set_window ("无标题 - 记事本", 1);
edit_set_insert_pos ("Edit", 0, 0);
obj_type ("Edit",notepadinput1);
obj_type ("Edit",notepadinput2);

edit_get_text("Edit",text);
result1 = text;
result2 = result1+1;
treturn result2+1;

#obj_type函数中输入内容部分直接用脚本的传入参数代替。Edit_get_text函数取得的内容赋值给脚本的传出参数,最后脚本还可以使用treturn语句返回一个脚本的返回值。

###########################################################################

执行脚本后可以看到notepadinput1=1,notepadinput2=2,text=12,result1=12,result2=13,脚本的返回值赋给main中的re1=14。

从这个例子可以看出,如果我们希望给脚本传递并得到多个参数,可以使用脚本属性里的参数设置来达成,而无须像Robot一样对脚本中的Function或Sub Declare(Robot对脚本的调用Callscrīpt是不能有参数的)。这就是WR脚本调用的一个好处。

连接位置:http://blog.51testing.com/?5939/action_viewspace_itemid_1222.html

但为什么再Main主脚本中的result1和result2都没有值?

[ 本帖最后由 fengyun407 于 2007-1-27 12:08 编辑 ]
作者: dionysus    时间: 2007-1-27 14:09
我来回答这个问题吧,你把主脚本中调用子脚本的地方改为 re1 = call ".\\notepadinputscript"(1,2,result1,result2);
把后面要传递过来的result1,result2写出来就行了。
blog中以前是这样写的,后来修改了一下改错了,不好意思sdlkfj1
PS:WR在这里似乎有问题,加上result1和result2后可以正常弹出返回值,但是再删除脚本中的result1和result2后执行脚本还是能正确弹出。当时就是因为这样我修改的脚本
作者: fengyun407    时间: 2007-1-28 21:12
ok,可以了,谢谢!
之前我还以为出了什么问题,一直在寻找着,但就是找不到
你的blog挺不错的,我也学到了一些知识,谢谢




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2