领测软件测试网
#与第一种情况的不同之处就是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脚本调用的一个好处。
第三种情况:调用另一个脚本中的函数,需要多个函数中的返回值
脚本中不仅可以录制操作,同样也可以编写函数。还是新建一个子脚本Function,需要在脚本属性中设置test type为Compiled Module(试验了一下发现不设置也没有报错)不用设置传入传出参数。在Function中编写如下函数:
function notepad1(in notepadinput,out result1,out result2) #函数的参数有三种类型:in为传入参数,out为传出参数,inout为传入和传出参数 { static text; #记住这里需要声明text,因为下面的edit_get_text函数用到了这个参数,但本函数中没有
# 无标题 - 记事本 set_window ("无标题 - 记事本", 1); edit_set_insert_pos ("Edit", 0, 0); obj_type ("Edit",notepadinput); edit_get_text("Edit",text); result1 = text+1; result2 = text+2; } function notepad2(in notepadinput) { static text;
# 无标题 - 记事本 set_window ("无标题 - 记事本", 3); edit_set_insert_pos ("Edit", 0, 0); obj_type ("Edit",notepadinput); edit_get_text("Edit", text); return text; #return为函数中的返回值 } |
###########################################################################
主脚本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"); } load(".\\function"); #这个是加载编译模块,加载后就可以在主脚本中直接使用编译模块里的函数了 re1 = notepad1(15,result1,result2); #直接使用Function中的函数notepad1,15为传入参数,result1和result2为传出参数。 re2 = result1; re3 = result2; re4 = notepad2(8); #使用Function中的notepad2函数 |
文章来源于领测软件测试网 https://www.ltesting.net/