JMeter Beanshell 向 cookie 值添加反斜杠
JMeter Beanshell adds backslash to cookies values
我正在为其准备性能脚本的应用程序是在 Sails 上实现的,并使用 cookie 来验证 API 调用的身份验证。使用 JMeter 的 HTTP Cookie 管理器没有帮助,因为它没有记录所有的 cookie 值。我能够使用 beanshell 预处理器手动添加它们
beanshell代码片段:
CookieManager manager = sampler.getCookieManager();
Cookie cookie1 = new Cookie("cookie1","someValue","localhost","/",false,0);
manager.add(cookie1);
此代码已成功将 cookie1 添加到 JMeter 中的 cookie 中。
我还需要添加另一个 cookie,其值类似于 JSON。
CookieManager manager = sampler.getCookieManager();
Cookie jsonCookie = new Cookie("cookie1","{\"Element\":{\"child1\":\"child1value\",\"child2\":\"child2value\"}","localhost","/",false,0);
manager.add(jsonCookie);
这个新 cookie (jsonCookie) 的值在调试采样器中看起来很好。当我在请求中查找相同的 cookie 时,Cookie 变量在双引号中添加了额外的转义字符。
Http Request Cookie Data:
cookie1=somevalue;jsonCookie="{\"Element\":{\"child1\":\"child1value\",\"child2\":\"child2value\"}"
Debug Sampler value
COOKIE_cookie1=somevalue
COOKIE_jsonCookie="{\"Element\":{\"child1\":\"child1value\",\"child2\":\"child2value\"}"
在 cookie 数据中添加额外的转义字符导致身份验证失败。我如何确保 cookie 值没有这些额外的转义字符?
我已经尝试从用户定义的变量中获取这些 json 值,并将它们直接传递到 Beanshell 预处理器中。在这两种方法中,生成的 cookie 值是相同的。
您可以将 "Cookie Policy" 下拉菜单更改为 netscape
以删除这些 "extra slashes"
实际上我认为这里不需要编写脚本,因为您可以通过 User-Defined Cookies
部分添加自定义 cookie,例如:
更多建议:
- 不要 运行 JMeter 和被测应用程序与 JMeter 在同一台机器上 非常 资源密集型,您可能会遇到 JMeter 和应用程序在同一台机器上的情况测试将努力争取 OS 资源
- 如果您必须编写脚本,请考虑切换到 JSR223 PreProcessor and Groovy language as when it comes to high loads Beanshell performance might be a big question mark
我正在为其准备性能脚本的应用程序是在 Sails 上实现的,并使用 cookie 来验证 API 调用的身份验证。使用 JMeter 的 HTTP Cookie 管理器没有帮助,因为它没有记录所有的 cookie 值。我能够使用 beanshell 预处理器手动添加它们
beanshell代码片段:
CookieManager manager = sampler.getCookieManager();
Cookie cookie1 = new Cookie("cookie1","someValue","localhost","/",false,0);
manager.add(cookie1);
此代码已成功将 cookie1 添加到 JMeter 中的 cookie 中。
我还需要添加另一个 cookie,其值类似于 JSON。
CookieManager manager = sampler.getCookieManager();
Cookie jsonCookie = new Cookie("cookie1","{\"Element\":{\"child1\":\"child1value\",\"child2\":\"child2value\"}","localhost","/",false,0);
manager.add(jsonCookie);
这个新 cookie (jsonCookie) 的值在调试采样器中看起来很好。当我在请求中查找相同的 cookie 时,Cookie 变量在双引号中添加了额外的转义字符。
Http Request Cookie Data:
cookie1=somevalue;jsonCookie="{\"Element\":{\"child1\":\"child1value\",\"child2\":\"child2value\"}"
Debug Sampler value
COOKIE_cookie1=somevalue
COOKIE_jsonCookie="{\"Element\":{\"child1\":\"child1value\",\"child2\":\"child2value\"}"
在 cookie 数据中添加额外的转义字符导致身份验证失败。我如何确保 cookie 值没有这些额外的转义字符?
我已经尝试从用户定义的变量中获取这些 json 值,并将它们直接传递到 Beanshell 预处理器中。在这两种方法中,生成的 cookie 值是相同的。
您可以将 "Cookie Policy" 下拉菜单更改为 netscape
以删除这些 "extra slashes"
实际上我认为这里不需要编写脚本,因为您可以通过 User-Defined Cookies
部分添加自定义 cookie,例如:
更多建议:
- 不要 运行 JMeter 和被测应用程序与 JMeter 在同一台机器上 非常 资源密集型,您可能会遇到 JMeter 和应用程序在同一台机器上的情况测试将努力争取 OS 资源
- 如果您必须编写脚本,请考虑切换到 JSR223 PreProcessor and Groovy language as when it comes to high loads Beanshell performance might be a big question mark