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

时间:2017-10-13 15:30:47

标签: jmeter jmeter-plugins beanshell

我见过很多例子,但似乎都没有。

这就是我的设置:

enter image description here

我使用foreach遍历我的变量并让Cookie管理器使用它们: enter image description here

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

我尝试了以下内容:

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'

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

enter image description here

然后这个:

enter image description here

但是这给了我这个错误:

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

2 个答案:

答案 0 :(得分:2)

由于性能不允许使用Beanshell,将来会删除它。

  • 在第一个HTTP请求
  • 上添加JSR223 PreProcessor
  • 选择Groovy
  • 检查"缓存已编译的脚本(如果可用)"
  • 添加以下代码:

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

这应该是什么样子

enter image description here

答案 1 :(得分:1)

您需要从JMeter上下文中进行Cookie管理:

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

目前,您从sampler获取该内容并且无关紧要。