いつでも(必要に応じて)JmeterJsessionID変数をクリアしたい。
JmeterCookieManagerに「各反復でCookieをクリアする」という名前のチェックボックスオプションがあることを知っています。
ただし、反復の任意の時点でセッションをクリアしたいのに、各反復でセッションをクリアします。
Jmeterでそれを行うにはどうすればよいですか?
いつでも(必要に応じて)JmeterJsessionID変数をクリアしたい。
JmeterCookieManagerに「各反復でCookieをクリアする」という名前のチェックボックスオプションがあることを知っています。
ただし、反復の任意の時点でセッションをクリアしたいのに、各反復でセッションをクリアします。
Jmeterでそれを行うにはどうすればよいですか?
ポスト/プリプロセス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);
}
}
現在、特に1つの特定のCookieをクリアしたい場合は、単純に行うことはできません。
JMeter Bugzillaで拡張リクエストを送信して、実行したいことを正確に行う必要があります。
カスタム関数は素晴らしい機能だと思います。以下を参照してください。
私の方法は上記の方法からそれほど遠くありませんが(申し訳ありませんが、うまくいきませんでした)、短く、ループ内のインデックスの重要な更新と、スクリプトの使用をクリアするための追加のデモが含まれています(私は願っています;))
JSESSIONIDはトークンの1つ(最初または後続の一部)であるため、JSESSIONIDを含むすべてのトークンを削除するには、必要に応じてJSR223Pre-および/または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)です。これは、各反復後にCookieManagerインスタンスのサイズが小さくなるため、OutOfBoundary例外を回避するのに役立ちます。