51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2703|回复: 2
打印 上一主题 下一主题

调用另外一个脚本时,参数传不过来

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-1-27 12:07:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
第二种情况:调用另一个脚本,传递参数并需要多个脚本的返回值

对脚本进行参数的传递和返回需要在脚本属性中进行设置,具体操作是新建一个子脚本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 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2007-1-27 14:09:35 | 只看该作者
我来回答这个问题吧,你把主脚本中调用子脚本的地方改为 re1 = call ".\\notepadinputscript"(1,2,result1,result2);
把后面要传递过来的result1,result2写出来就行了。
blog中以前是这样写的,后来修改了一下改错了,不好意思sdlkfj1
PS:WR在这里似乎有问题,加上result1和result2后可以正常弹出返回值,但是再删除脚本中的result1和result2后执行脚本还是能正确弹出。当时就是因为这样我修改的脚本
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2007-1-28 21:12:52 | 只看该作者
ok,可以了,谢谢!
之前我还以为出了什么问题,一直在寻找着,但就是找不到
你的blog挺不错的,我也学到了一些知识,谢谢
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-15 13:44 , Processed in 0.079211 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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