领测软件测试网
执行脚本可以正确得到数值,注意使用函数的时候一定要把函数的所有参数都写出,不管是传入的还是传出的。如果没有写传出参数,如主脚本中只是re1 = notepad(15);re2 = result1;re3 = result2;则result1和result2在主脚本中是无法得到数值的(在Function子脚本中可以有值)。切记!!
第四种情况:调用另一个脚本,给这个脚本传递参数,并根据参数判断执行脚本中的函数,需要函数的返回值
这种情况比较复杂,脚本参数和函数参数都使用到了。结合上面介绍的方法,我们先建立一个子脚本notepadinput,在脚本属性中建立两个input参数:mode(用来判断执行脚本中的哪个函数),notepadinput(用来给脚本中的函数传参),编写语句如下:
function notepad1(in notepadinput) #第一个函数,notepadinput是脚本中定义的传入参数 { static text; # 无标题 - 记事本 set_window ("无标题 - 记事本", 1); edit_set_insert_pos ("Edit", 0, 0); obj_type ("Edit",notepadinput); edit_get_text("Edit",text); return text; #第一个函数的函数返回值 } function notepad2(in notepadinput) #第二个函数,notepadinput是脚本中定义的传入参数 { static text; # 无标题 - 记事本 set_window ("无标题 - 记事本", 3); edit_set_insert_pos ("Edit", 0, 0); obj_type ("Edit",notepadinput); edit_get_text("Edit", text); return text; #第二个函数的函数返回值 } switch(mode) #mode是脚本定义的传入参数,用来判断运行哪个函数 { case 0: { re = notepad1(notepadinput); #函数在本脚本内,可以直接使用 treturn re; #将函数的返回值作为脚本返回值 break; #跳出switch } case 1: { re = notepad2(notepadinput); treturn re; break; } } |
###########################################################################
主脚本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 ".\\notepadinput"("8",0); #调用脚本,传递notepadinput和mode,这个调用将执行子脚本的第一个函数 pause (re1); #re1得到的是子脚本的脚本返回值,即treturn的值 re2 = call ".\\notepadinput"("5",1); #调用脚本,传递参数,执行第二个函数 pause (re2); |
###########################################################################
执行脚本可以看到我们从主脚本中设置不同的参数将会影响到子脚本执行哪个函数,这对于实际操作中也是很常见的,但逻辑稍显混乱,维护起来有些麻烦。
WR的脚本和函数调用丰富多样,既可以脚本传参也可以脚本中的函数传参,对于学者来说很易混乱。我将常见的几种调用方法总结如上,算是使用上的归类,也许存在一些错误,希望能得到高手们的指点。
文章来源于领测软件测试网 https://www.ltesting.net/