如何在Jmeter中调用Beanshell中的javaScript函数

时间:2013-08-12 04:48:28

标签: javascript jmeter jmeter-plugins

我正在使用Jmeter进行测试,我必须编辑一个通过正则表达式提取的特定变量,我正在尝试使用Beanshell中的javaScript编辑变量。首先,我想知道是否可以直接在Beanshell中删除javascripts,然后我可以如何调用JavaScript函数。例如以下代码。

var passwd = "abcd@123";
        var newpasswd = "";
        var ranVal= "ABCDEF";
 function SaveClick(){
      print("BBBBB");   

                document.write("<h3>Final Encripted Password : </h3>", newpasswd);
            //document.write(newpasswd);
        }

2 个答案:

答案 0 :(得分:2)

你不能混合使用Beanshell和javascript。

但要使用完整的javascript,请使用Jsr223元素并选择javascript。

请注意,您需要内联函数代码,因为无法调用元素之外的函数。

无论如何,Javascript不允许您访问DOM,因此您正在尝试使用它 document.write 无效。

答案 1 :(得分:1)

你可以使用BSF后处理器,它有各种脚本语言,javascript就是其中之一。

http://jmeter.apache.org/usermanual/component_reference.html#BSF_PostProcessor 以下是我的测试计划之一的示例javascript。注意使用eval,putObject,put,log等。

log.info("processing image index response");
if ("" != prev.getResponseDataAsString()) {
    eval( 'var indexJSON = ' + prev.getResponseDataAsString() );
    vars.putObject("indexJSON", indexJSON);

    vars.put("currentThumb", "0");
    vars.put("currentSlide", "0");

    var next_slide_timestamp=indexJSON[0].timestamp;
    vars.put("next_slide_timestamp", "0");

    var maxSlides=indexJSON.length;
    vars.put("maxSlides", maxSlides);
} else {
    vars.put("currentThumb", "0");
    vars.put("currentSlide", "0");
    vars.put("next_slide_timestamp", "0");
    vars.put("maxSlides", "0");
    log.info("index time : empty response , setting defaults to zero");
}