0

我正在使用 Jmeter 进行测试,我必须编辑一个通过正则表达式提取的特定变量,并且我正在尝试使用 Beanshell 中的 javaScript 编辑该变量。首先,我想知道我是否可以直接在 Beanshell 中包含 javascript,其次我如何调用 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);
        }
4

2 回答 2

2

您不能混合使用 Beanshell 和 javascript。

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

请注意,您将需要内联函数代码,因为无法在 element 之外调用函数。

无论如何,Javascript 不允许您访问 DOM,因此您尝试对 document.write执行的操作将不起作用。

于 2013-08-12T06:57:04.960 回答
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");
}
于 2013-08-12T06:55:52.270 回答