版权声明:本文为博主原创文章,未经博主允许不得转载。


【系统及软件配置】

  LR版本:12.53

  JDK版本:1.8

  函数:web_js_run,该函数仅在LR12版本提供支持,LR11不支持JavaScript的运行。

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

【测试1】-----执行JavaScript自带对象。

web_js_run(
        "Code=alert('Hello world');",
        LAST);

  备注: 该函数"Code="的等号前后不能有空格,否则该函数会报错:argument (number 1) is unrecognized or misplaced [MsgId: MERR-26396]

  运行结果:

【测试2】-----执行JavaScript自带对象的方法,并获取返回值。

web_js_run(
        "Code=new Date().getTime();",
        "ResultParam=timestamp",
        LAST);
 lr_output_message(lr_eval_string("{timestamp}"));

  运行结果:

【测试3】-----执行外部js文件中的无参函数,并获取返回值。

web_js_run(
        "Code=getString()",
        "ResultParam=string1",
        SOURCES,
        "File=000.js", 
        ENDITEM,
        LAST);
 lr_output_message(lr_eval_string("{string1}"));
000.js内容如下:

function getString(){
    var date = "This is LoadRunner12";
    return date;
}

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

  运行结果:

【测试4】执行外部js文件中的有参函数且参数固定,并获取返回值。

web_js_run(
        "Code=getSum(1,2)",
        "ResultParam=sum",
        SOURCES,
        "File=000.js",   
        ENDITEM,
        LAST);
 lr_output_message(lr_eval_string("{sum}"));
000.js文件的内容如下:

function getSum(arg1,arg2){
    var date = arg1*1 + arg2*1;   
    return date;
}
//若直接使用arg1+arg2,则Javscript会执行字符串的相加;

  运行结果:

【测试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();

  运行结果:

  参数格式尝试及结果:

"Code=getSum({Param},{Param})", Error from JS Engine: ":0:SyntaxError: invalid object initializer
" [MsgId: MERR-26000]
"Code=getSum(\"{Param}\",\"{Param}\")", Action.c(35): web_js_run started [MsgId: MMSG-26355]
Action.c(35): web_js_run was successful [MsgId: MMSG-26392]
Action.c(42): NaN

【测试6】执行多个js函数,且函数的参数需要动态关联,并需要获取返回值。

web_js_run(
        "Code=" 
        "let rsaKey = new RSAKey();" 
        "rsaKey.setPublic(b64tohex(LR.getParam('exponent')),b64tohex(LR.getParam('modulus')));" 
        "hex2b64(rsaKey.encrypt(LR.getParam('password')));", //
        "ResultParam=NewPassword",
        SOURCES,
        "File=sec.min.js",   
        ENDITEM,
        LAST);
 lr_output_message(lr_eval_string("{NewPassword}"));

  备注:Code参数中连续执行了3条Javascript语句;

  目前上面的语句还留有问题,虽脚本未报错,但NewPassword值为空;

【测试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。

LoadRunner12_脚本中运行JavaScrip相关推荐

  1. linux shell脚本 wget,bash – 在shell脚本中运行wget和其他命令

    以下是编写shell脚本时要使用的一些准则. >使用它们时始终引用变量.这有助于避免误解的可能性. (如果文件名包含空格怎么办?) >不要相信像rm这样的命令上的文件加载.请改用循环. ( ...

  2. Pytest脚本中运行用例方式

    脚本树如下: test1文件下test_01.py存放test1和test2用例 test1文件下test_02.py存放test1和test2用例 test2文件下test_03.py存放test1 ...

  3. python代码直接关机_关机信号在python脚本中运行代码

    shutdown发送SIGTERM信号,atexit无法处理.背景管理者也不会,最后是块等. import signal signal.getsignal(signal.SIGTERM) Out[64 ...

  4. Shell脚本中获取命令运行结果、特殊变量使用、条件判断等常用操作

    文章目录 前言 获取命令执行结果 使用反引号 `` ` ``command `` ` ``来执行命令 使用括号组合 $(command) 来执行命令 两种方式的区别 特殊变量使用 $0 $1 $2 . ...

  5. 为什么“ cd”在shell脚本中不起作用?

    我正在尝试编写一个小脚本以将当前目录更改为我的项目目录: #!/bin/bash cd /home/tree/projects/java 我将此文件另存为proj,并使用chmod添加了执行权限,然后 ...

  6. shell脚本for循环_了解Shell脚本中的for循环

    shell脚本for循环 Continuing on from our previous tutorials, let's understand the for loop in shell scrip ...

  7. Postman进阶篇(十二)-在脚本中使用pm对象访问接口响应数据(pm.response.*)

    在之前的文章中介绍过postman中的两个脚本--pre-request script或test script,在这两个脚本中都有使用到pm对象.(pre-request script详细介绍.Tes ...

  8. power python_在 Power BI Desktop 中运行 Python 脚本

    在 Power BI Desktop 中运行 Python 脚本Run Python scripts in Power BI Desktop 06/02/2020 本文内容 你可以直接在 Power ...

  9. 如何在jupyter notebook中运行markdown文件(脚本、代码)

    需要装一个notedown插件,不能直接pip install notedown安装,需要: pip install notedown --index https://mirrors.ustc.edu ...

最新文章

  1. 女性养生需知的16条健康戒律
  2. java注释的简单_Java简单注解
  3. spring MVC(2)--注解Hello World
  4. C++ 虚函数经典深入解析
  5. 【答辩问题】计算机专业本科毕业设计答辩需注意的内容
  6. 数据库与REDIS缓存数据一致性解决方案
  7. pythonsorted降序_【python】 sort、sorted高级排序技巧
  8. 导出IE浏览器配置的注册表信息 IE设置的注册表相关信息以及修改方法
  9. 如何用计算机做样本抽样,抽样设计和样本抽选.doc
  10. 计算机房属于学校场馆吗,校园常见火灾的预防和逃生安全知识
  11. 丁火生于未月命理分析_丁火生于未月
  12. android re卸载程序,手机自带软件卸载不了?教你2种方法,强制卸载预装应用程序!...
  13. buildroot制作树莓派CM3的系统
  14. MySQL基础学习笔记——关于KEY的说明
  15. 基于javaweb的二手自行车商城系统(java+jsp+javascript+servlet+mysql)
  16. Invalid default value for
  17. 【品牌搜索】两步查找品牌数据,快速实现品牌营销布局。
  18. 十五”期间广东职业教育发展概况
  19. SpringBoot邮件服务spring-boot-starter-mail
  20. linux usb摄像头使用方法,linux 下USB 摄像头的使用说明

热门文章

  1. 科技爱好者周刊:第 71 期
  2. SIM(Search-based user interest modeling)
  3. 心电图计算心率公式_【减脂心率计算公式】_计算方法_如何计算-大众养生网
  4. 摩莎(MOXA)NPort 5110串口转网口设定
  5. 未来网络的主宰——云操作系统
  6. 福特试验电子围栏限速
  7. 第一篇【Python】基础-关东升-专题视频课程
  8. 中艺人脸识别考勤机使用方法_人脸识别考勤机简单使用说明
  9. 【R语言】对图片进行裁剪 图片批量裁剪
  10. 安卓手机机短信如何导入苹果IOS9以上版本