在 JSR223 Sampler Jmeter 中添加来自先前采样器的 Cookie

Adding Cookie from previous sampler in JSR223 Sampler Jmeter

我正在尝试执行来自 JSR223 采样器的 ajax 调用,就像在 中一样。

我能够从 ajax 不需要登录身份验证 cookie 的调用中获得响应。 但是,没有从需要登录生成的身份验证 cookie 的 ajax 调用中获得响应。

我在 JSR223 采样器之前添加了登录 http 调用,但是 cookie 没有在请求中传递。尝试添加代码:

HTTPSamplerProxy previousSampler = ctx.getPreviousSampler();
CookieManager cookieManager = previousSampler.getCookieManager();
HTTPSampleResult previousResult = (HTTPSampleResult)ctx.getPreviousResult();
log.info("Cookie Count is : "+ cookieManager.getCookieCount());

它抛出以下异常:

2017-11-28 10:44:51,195 ERROR o.a.j.p.j.s.JSR223Sampler: Problem in JSR223 script JSR223 Sampler, message: javax.script.ScriptException: java.lang.NullPointerException: Cannot invoke method getCookieCount() on null object javax.script.ScriptException: java.lang.NullPointerException: Cannot invoke method getCookieCount() on null object

检查您是否在测试 pkan 中添加了 CookieManager。

也使用 JSR223 预处理器而不是 JsR223 采样器。

您收到的错误表明您没有 HTTP Cookie Manager added/enabled。


作为 Groovy 脚本的替代方案,您可以使用 "normal" JMeter HTTP Request 自然支持 cookie、缓存、headers、授权等的采样器

为了能够以 AJAX-like 并行方式执行它们,请将采样器置于 Parallel Controller. You can install the Parallel Controller using JMeter Plugins Manager

如前所述,您有 HTTP cookie 管理器吗? 这是将 cookie 添加到 cookie 管理器中的代码

import org.apache.jmeter.protocol.http.control.Cookie;

try {
    String params = vars.get("getCookieValue");
    ctx.getCurrentSampler().getCookieManager().add(new Cookie("COOKIENAME", params, "domain", "/url", true, Long.MAX_VALUE));
}
catch (Throwable ex) {
    log.error("Error in Beanshell", ex);
    throw ex;
}