【问题标题】:How to capture dynamic values created using javascript in jmeter如何在 jmeter 中捕获使用 javascript 创建的动态值
【发布时间】:2013-07-26 11:19:47
【问题描述】:
我正在尝试运行 JMeter 脚本,但登录时失败。原因是,密码是使用 RSA 算法加密的,那就是使用 javascript。所以录制时保存的密码不起作用,我无法获得加密密码的动态值,因为它是使用 JMeter 不支持的 javascript 加密的。由于在运行时使用 javascript,我不能使用正则表达式来查看响应数据,因为这不是响应的一部分。
我正在尝试登录 Tableau 报告服务器。
【问题讨论】:
标签:
javascript
dynamic
jmeter
【解决方案2】:
我在使用 NEOLOAD 时遇到了同样的问题,所以我在 Auth POST 之前添加了以下脚本。
// Get variable value from VariableManager
var doLoginIDString = context.variableManager.getValue("doLoginID");
if (doLoginIDString==null) {
context.fail("Variable 'doLoginID' not found");
}
logger.debug("doLoginIDString="+doLoginIDString);
var rsa = new RSAKey();
rsa.setPublic(doLoginIDString,'10001');
var res = rsa.encrypt('<USER_PASSWORD>');
logger.debug("encrypted_var= "+res);
if (res) {
context.variableManager.setValue("crypted_Password",res);
}
VariableManager 是一个 NEOLOAD 变量管理器 :)
“doLoginID”是我根据服务器传递的字符串创建的变量,供您使用密码进行加密。这个字符串可以在 LoginPage 的源代码中找到。
“crypted_Password”是我为 POST 加密参数创建的变量。
RSAKey()、setPublic() 和 encrypt() 包含在您访问登录页面时从服务器下载的 .js 文件中。我只是将这些文件包含到我的项目库中,它就可以工作了。
我不知道与 JMeter 是否相同,但希望这有助于您了解您需要做什么。
【解决方案3】:
我也没有找到并回答这个问题,但我所做的是每次运行测试时将 tableau_online_id 和 workgroup_session_id cookie 放入用户变量中.
所以我首先使用浏览器登录,并使用变量将这些 cookie 设置为 JMeter cookie。