我想随时清除JMeter JsessionID变量(根据我的要求)。我知道在JMeterCookieManager中有一个名为“Clear Cookie on each Iteration"的复选框选项。但是它会在每次迭代时清除会话,而我想在迭代中的任何时候都清除它。如何在JMeter中实现这一点?
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); } }
k4aesqcs2#
目前,您不能简单地,特别是如果您想清除一个特定的cookie。您应该在JMeter Bugzilla上提出增强请求,给出您想要做的精确度。我认为自定义函数将是一个很好的特性,请参见:
lnxxn5zx3#
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示例的大小在每次迭代后都会变小。
3条答案
按热度按时间5rgfhyps1#
您只需添加后处理/预处理beanShell,并使用以下代码
k4aesqcs2#
目前,您不能简单地,特别是如果您想清除一个特定的cookie。
您应该在JMeter Bugzilla上提出增强请求,给出您想要做的精确度。
我认为自定义函数将是一个很好的特性,请参见:
lnxxn5zx3#
JSESSIONID是令牌之一(第一个或随后的一些令牌),因此,为了删除包括JSESSIONID在内的所有令牌,我建议在需要时在JSR 223预处理器和/或后处理器中使用以下Java脚本:
Example of adding the script to PostProcessor in jMeter
请注意:在for循环中,这里是(0),而不是(index),这有助于避免OutOfBoundary异常,因为CookieManager示例的大小在每次迭代后都会变小。