在我的JMeter测试计划中,我的应用程序生成了两个cookie“ XSRF-Token”和“ laravel_session”。在一个线程中,我有登录请求,而另一个线程中,有内部页面。我已经在测试计划级别定义了HTTP COOKIES Manager,但无法正常工作。 然后我尝试使用BeanShell预处理器和后处理器,这是我的代码: 登录线程中的Beanshell后处理器:
props.put("MyCookie","${COOKIE_XSRF-TOKEN}");
props.put("MyCookie1","${COOKIE_laravel_session}");
Beanshell pre-processor in another thread:
import org.apache.jmeter.protocol.http.control.CookieManager;
import org.apache.jmeter.protocol.http.control.Cookie;
CookieManager manager = sampler.getCookieManager();
Cookie cookie = new Cookie("XSRF-TOKEN",props.get("MyCookie"),"mydomain","/",true,0);
manager.add(cookie);
Cookie cookie1 = new Cookie("laravel_session",props.get("MyCookie1"),"mydomain",/",true,0);
manager.add(cookie1);
有什么主意我该如何管理多个cookie并进行设置,以便我的下一个线程可以正常运行?
答案 0 :(得分:0)
首先,使用Cookie管理器检查是否对第一个请求设置了cookie。如果您的登录请求在视图结果树侦听器中显示cookie。如果不是这种情况,那么应用程序可能会出现问题。检查底部的第二个链接。
解决方法:- 将以下行添加到bin文件夹下的user.properties文件中
CookieManager.save.cookies=true
重新启动JMeter以获取属性
现在,您应该可以在需要时将Cookie值引用为$ {COOKIE_XSRF-TOKEN},例如,添加另一个HTTP Cookie Manager作为第二个请求的子代,并定义XSRF_TOKEN和laravel会话。
您不需要使用两个线程组来将cookie从一个线程组提供给另一个线程组。要获取Cookie并将其提供给下一个请求,请在单个线程组中执行此操作。
有关在JMeter测试中处理cookie的更多信息,请参见下面的JMeter文章。 https://www.blazemeter.com/blog/using-http-cookie-manager-jmeter-not-cookie-jar https://www.blazemeter.com/blog/http-cookie-manager-advanced-usage-a-guide
希望有帮助。