如何按需清除JMeter中每个线程(用户)的JSESSIONID

f1tvaqid  于 2022-11-09  发布在  其他
关注(0)|答案(3)|浏览(207)

我想随时清除JMeter JsessionID变量(根据我的要求)。
我知道在JMeterCookieManager中有一个名为“Clear Cookie on each Iteration"的复选框选项。
但是它会在每次迭代时清除会话,而我想在迭代中的任何时候都清除它。
如何在JMeter中实现这一点?

5rgfhyps

5rgfhyps1#

您只需添加后处理/预处理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);
    }
}
k4aesqcs

k4aesqcs2#

目前,您不能简单地,特别是如果您想清除一个特定的cookie。
您应该在JMeter Bugzilla上提出增强请求,给出您想要做的精确度。
我认为自定义函数将是一个很好的特性,请参见:

lnxxn5zx

lnxxn5zx3#

  • 我的方法与上面的方法相差不远(抱歉,我不适合),但它更短,包含循环内索引的重要更新,以及一些用于清除脚本用法的附加演示(我希望;(页:1

JSESSIONID是令牌之一(第一个或随后的一些令牌),因此,为了删除包括JSESSIONID在内的所有令牌,我建议在需要时在JSR 223预处理器和/或后处理器中使用以下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);
        }

Example of adding the script to PostProcessor in jMeter
请注意:在for循环中,这里是(0),而不是(index),这有助于避免OutOfBoundary异常,因为CookieManager示例的大小在每次迭代后都会变小。

相关问题