6

我想随时(根据我的要求)清除 Jmeter JsessionID 变量。

我知道 Jmeter CookieManager 中有一个名为“每次迭代清除 Cookie ”的复选框选项。
但是它会在每次迭代中清除会话,而我想在迭代中的任何时候清除它。

我怎么能在 Jmeter 中做到这一点?

4

3 回答 3

7

您可以,只需添加后/预处理 beanShell 并使用此代码

import org.apache.jmeter.protocol.http.control.CookieManager;
import org.apache.jmeter.protocol.http.control.Cookie;
CookieManager manager = sampler.getCookieManager();
for (int i=0;i<manager.getCookieCount();i++){
    Cookie cookie = manager.get(i);
    //remove a cookie 
    if (cookie.getName().equals("BAD_COOKIE")){
        sampler.getCookieManager().remove(i);
    }
}
于 2014-05-20T08:46:25.497 回答
2

目前你不能简单地,特别是如果你想清除一个特定的 cookie。

您应该在 JMeter Bugzilla 提出增强请求,准确说明您想要做什么。

我认为自定义函数将是一个不错的功能,请参阅:

于 2012-10-03T18:39:37.673 回答
1

我的方式与上述方式相距不远(抱歉,这对我不起作用),但它更短,包含循环内索引的重要更新,以及一些用于清除脚本使用的额外演示(我希望;))

JSESSIONID 是令牌之一(第一个或一些后续),因此为了删除包括 JSESSIONID 在内的所有令牌,我建议在您需要的 JSR223 Pre-和/或 PostProcessor 中使用以下 Java 脚本:

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

CookieManager cManager = sampler.getCookieManager();
    int count = cManager.getCookieCount();
    for (int index = 0; index < count; index++) {
        cManager.remove(0);
        }

jMeter中将脚本添加到PostProcessor的示例

注意:这里的for循环内部是 (0),而不是 (index),这有助于避免 OutOfBoundary 异常,因为每次迭代后 CookieManager 实例的大小都会变小。

于 2016-11-22T17:03:39.103 回答