使用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
Run Code Online (Sandbox Code Playgroud)
我尝试使用此代码添加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();
Run Code Online (Sandbox Code Playgroud)
好的,我发现了问题.即使'HTTP Cookie Manager'有一个名为'每次迭代清除cookie'的选项,它所说的'迭代'也不包括循环控制器.它所指的只是'Thread Group'迭代/循环.这不清楚,我浪费了半天,直到我想出来.如果复选框说"清除每个线程组迭代的cookie",则不会令人困惑.非常失望.
用于清除 cookie 的 Beanshell 代码实际上没有执行任何操作,因为cManager实例没有传递回采样器。您需要按如下方式修改您的代码:
CookieManager cManager = sampler.getCookieManager();
cManager.clear();
sampler.setCookieManager(cManager);
Run Code Online (Sandbox Code Playgroud)
所以sampler可以让“cManager”实例清除cookie
有关 Apache JMeter 中 Beanshell 脚本编写的更多信息,请参阅如何使用 BeanShell:JMeter 最喜欢的内置组件指南。
| 归档时间: |
|
| 查看次数: |
3435 次 |
| 最近记录: |