web_js_run

2021-11-24  本文已影响0人  _Irving

web_js_run(
//        "Code=encrypt("04319b0bc1cfc5f8b85d6f0fa6d33c7116d80d4fe74544af65e7fd2de53047777578b51352020464dd8523b1a73e609200258b50bf279b9373e494a9","1")",
"Code=decrypt(LR.getParam('param'),LR.getParam('ct'))",
"ResultParam=res",
SOURCES,
"File=Crypto-js.js",
ENDITEM,
LAST);

LR配置:开启了允许JavaScript运行:Replay→RunTime Settings→Preferences→Javascript→勾选“Enabe running JavaScript code”

1、【测试2】-----执行JavaScript自带对象的方法,并获取返回值。
web_js_run(
        "Code=new Date().getTime();",
        "ResultParam=timestamp",
        LAST);
 lr_output_message(lr_eval_string("{timestamp}"));

2、测试3】-----执行外部js文件中的无参函数,并获取返回值。
web_js_run(
"Code=getString()",
"ResultParam=string1",
SOURCES,}
"File=000.js",
ENDITEM,
LAST);
lr_output_message(lr_eval_string("{string1}"));

备注:①File参数中的js文件放在工作目录下即可使用相对路径;②计算机-组织-文件夹和搜索选项-取消“隐藏已知文件的扩展名”,否则可能会出现找不到文件的错误,测试使用的文件属性如下;

3、【测试5】执行外部js文件中的有参函数且参数需要动态关联,并获取返回值。

web_js_run(
"Code=getSum(LR.getParam('Param'),LR.getParam('Param'))",
"ResultParam=sum2",
SOURCES,
"File=000.js",
ENDITEM,
LAST);
lr_output_message(lr_eval_string("{sum2}"));

备注:①使用LR.getParam()函数,作用是将LoadRunner的参数值提取出来,用为web_js_run函数运行时Code中的函数参数,传递给本地js文件,类似于LoadRunner的lr_eval_string();

4、【测试7】函数一次定义多次使用
web_js_run(
"Code=myFunc(1, 2);",
"ResultParam=sum4",
SOURCES,
"Code=var myFunc=function(x,y) { return x*1+y*1; }",
ENDITEM,
LAST);
lr_output_message(lr_eval_string("{sum4}"));

web_js_run("Code=myFunc(3, 4);",
"ResultParam=sum5",
LAST);

lr_output_message(lr_eval_string("{sum5}"));

在这个例子中,myFunc()一次定义,多次使用,那么我们就会问该函数的生命周期是什么呢?多次迭代会生成多个该函数吗?如果是,那么重复定义造成的资源浪费怎么处理呢?其实:LoadRunner在设计时已经考虑了这些,为此有一个函数web_js_reset,如下。

【扩展:web_js_reset】

  作用:①清理web_js_run执行后,生成的“变量、函数”等内容,释放其所在内存,否则之前定义过的函数和保存的变量会一直存在,会消耗本地资源的内存;

备注:如果在“Replay→RunTime Settings→Browser→Browser Emulation”中勾选了“simulate a new user on each iteration”,在开始新一次的迭代时,LoadRunner会自动执行web_js_reset。

上一篇下一篇

猜你喜欢

热点阅读