如何访问 beanshell 中的 cookie 管理器?

How can I access the cookie manager in beanshell?

我看过很多例子,但 none 似乎可行。

这是我的设置:

我正在使用 foreach 循环遍历我的变量并让 Cookie 管理器使用它们:

我希望 beanshell 在每个循环中清除 cookie 管理器中的 cookie,以便从我的变量中重新添加它们,但我似乎无法访问它。

我尝试了以下方法:

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

manager = sampler.getCookieManager();

这给了我这个错误:

Attempt to resolve method: getCookieManager() on undefined variable or class name: sampler

我试过这样做:

CookieManager cManager = ctx.getCurrentSampler().getCookieManager();

但这给了我这个错误:

Typed variable declaration : Error in method invocation: Method getCookieManager() not found in class'org.apache.jmeter.protocol.java.sampler.BeanShellSampler'

编辑: 因此,根据建议的解决方案,我尝试了这个:

然后是这个:

但这给了我这个错误:

2017/10/13 12:26:31 ERROR - jmeter.extractor.JSR223PostProcessor: Problem in JSR223 script JSR223 PostProcessor javax.script.ScriptException: java.lang.NullPointerException: Cannot invoke method clear() on null object

由于性能原因请勿使用 Beanshell,它将在以后的版本中删除。

  • 在第一个 HTTP 请求上添加 JSR223 PreProcessor
  • Select Groovy
  • 勾选"Cache compiled script if available"
  • 添加以下代码:

import org.apache.jmeter.protocol.http.control.CookieManager; import org.apache.jmeter.protocol.http.control.Cookie; CookieManager cm = sampler.getCookieManager(); cm.clear();

这是它应该的样子

您需要从 JMeter 上下文中获取 Cookie 管理:

CookieManager cm= ctx.getCurrentSampler().getCookieManager();

目前您正在从 sampler 获取它,这是无关紧要的。