如何在jmeter中注册和调用外部javascript函数
我有这样一个场景如何在jmeter中注册和调用外部javascript函数,javascript,jmeter,Javascript,Jmeter,我有这样一个场景 user logs in ( /login) navigate to the reservations page to get all the reservation id (/reservations) Through json path extractor it gets first reservation id from the JSON.($..reservationLists..id[0], reservationid) navigate to th
user logs in ( /login)
navigate to the reservations page to get all the reservation id (/reservations)
Through json path extractor it gets first reservation id from the JSON.($..reservationLists..id[0], reservationid)
navigate to the first reservation id (/reservation/${reservationid})
在它导航的每个页面中,HTTP头管理器都需要适用于该页面的握手键,该握手键基本上是url、secretKey、publicKey的组合。(secretKey和publicKey都是静态的,但是url发生了变化)
对于像(/login,/reservations)这样的静态URL,我在开始时添加了一个BSF预处理器,并声明变量,并在HTTP头管理器中使用这些变量作为${handshakeey_reservations}、${handshakeKey_login}等,效果非常好
var urls = ["login", "reservations", "logout", "profile"];
for (var i = 0; i < urls.length; i++) {
var handShakeKeyForStaticUrls = CryptoJS.SHA1("/"+urls[i]+"abcdediiebneC"+"12345678");
handShakeKeyForStaticUrls = handShakeKeyForStaticUrls.toString(CryptoJS.enc.Base64);
vars.put("handshakeKey_"+urls[i], handShakeKeyForStaticUrls);
}
然后在HTTP头管理器中,我希望
握手键${uJavaScript(gethandshakey(“/reservation/${reservationid}”)}
所以问题是我可以在哪里注册这个java脚本函数,这样我就可以在任何地方调用它
尽管目前我所做的工作是,向每个包含动态url的http采样器添加BSF后处理器,并生成和声明仅适用于该url的握手键,并在相应的http头管理器中使用相同的握手键。我需要把这个处理掉 对此有什么想法吗?实际上可以注册外部java脚本,并在任何地方全局调用该java脚本中的函数。beanshell.function.init是否允许注册javascipt类/方法,以便我们可以在任何地方全局调用它。您是否找到解决此问题的方法?如果是,请分享。
function getHandShakeKey(url)
{
var handShakeKeyForDynamicUrls = CryptoJS.SHA1(url+"abcdeffe"+"12345678");
handShakeKeyForDynamicUrls = handShakeKeyForDynamicUrls.toString(CryptoJS.enc.Base64);
//return handShakeKeyForDynamicUrls;
vars.put("handShakeKeyForDynamicUrls", handShakeKeyForDynamicUrls);
}