使用Jmeter 2.12,什么可能导致cookie在JMeter循环控制器期间无法重置?我已经尝试了所有我能想到的东西,但每次循环时,之前登录的其中一个cookie仍然存在。它似乎并没有真正清除cookie。
以下是我将循环放在一起的方法:
Thread Group 1
-- Loop Controller (3x)
-- Simple Controller
-- HTTP Header Manager
-- HTTP Cookie Manger (with 'Clear cookies each iteration?' enabled)
-- BeanShell sampler - with code that tries to clear all cookies
-- HTTP /login (gets cookies and auth headers)
-- ... various HTTP Samplers ...
-- HTTP /logout
我尝试使用此代码添加Beanshell采样器(如上所示)但它似乎没有做任何事情:
import org.apache.jmeter.protocol.http.control.CookieManager;
import org.apache.jmeter.protocol.http.control.HeaderManager;
CookieManager cManager = sampler.getCookieManager();
cManager.clear();
HeaderManager hManager = sampler.getHeaderManager();
hManager.clear();
答案 0 :(得分:8)
好的,我发现了问题。即使是' HTTP Cookie管理器'每次迭代都有一个名为“清除Cookie”的选项,“迭代”#39;它说的不包括循环控制器。它所指的是'线程组'仅迭代/循环。这不清楚,我浪费了半天,直到我想出来。如果复选框说“清除每个线程组迭代的cookie”,那么不会让人感到困惑。代替。非常失望。
答案 1 :(得分:3)
用于清除Cookie的Beanshell代码实际上没有做任何事情,因为cManager
实例未被传递回采样器。您需要按如下方式修改代码:
CookieManager cManager = sampler.getCookieManager();
cManager.clear();
sampler.setCookieManager(cManager);
所以sampler
可以拥有" cManager"已清除cookie的实例
有关Apache JMeter中Beanshell脚本的更多信息,请参阅How to use BeanShell: JMeter's favorite built-in component指南。