我正在使用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);
}
答案 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");
}