参考网址:
http://smilejay.com/2013/04/login-wordpress-with-jmeter/
http://wangsheng14591.blog.163.com/blog/static/327797102012829101351887/
早期的JMeter版本(2.3.2或更早)对与cookie的管理是支持跨域的,也就是说不同域名的网站都可以使用cookie manager中 的cookie,2.3.2版本之后,这个就不可以了,必须同源,才能共用cookie,如果你想让JMeter的cookie manager支持跨域, 修改bin/JMeter.properties
CookieManager.check.cookies=false
接受到的cookie会被自动存储在线程变量中,但是从Jmeter2.3.2版本后,默认不再存储,如果你想要manager自动存储收集到的cookie,
你需要修改bin/JMeter.properties
CookieManager.save.cookies=true
存储的时候,cookie的key会以“COOKIE_”为前缀命名(默认情况),如果你想自定义这个前缀,修改bin/JMeter.
properties
除了自动收集,我们还可以手动添加cookie,尽量不要一个一个手动去填写,我们可 以结合firefox的插件firebug,直接将cookie导入
点击红色框中的,下拉框中有个导出本站点的cookie,就可以将cookie信息保存为一个cookies.txt文件,接着打开jmeter 的cookie manager
Cookie Manager中的参数说明
深入了解Jmeter的Cookie管理首先,设置是否检查Cookie的有效性,代码在:apache-jmeter-2.9/src/protocol/http/org/apache/jmeter/protocol/http/controlCookieManager.java
src/java/org/apache/commons/httpclient/cookie/CookieSpecBase.java
(在线代码浏览:http://hc.apache.org/httpclient-3.x/xref/org/apache/commons/httpclient/cookie/CookieSpecBase.html)
CookieManager.name.prefix=
这个配置如果未启用(也就是维持默认),我们可以通过一下方式获取到cookie的值:${COOKIE_name},其中name为cookie的名称
除了自动收集,我们还可以手动添加cookie,尽量不要一个一个手动去填写,我们可 以结合firefox的插件firebug,直接将cookie导入
点击红色框中的,下拉框中有个导出本站点的cookie,就可以将cookie信息保存为一个cookies.txt文件,接着打开jmeter 的cookie manager
Cookie Manager中的参数说明
Name 自定义该cookie的描述,例如:tuan.qq.com的cookie
###########################################################################################################
Clear Cookies each Iteration 每次线程组运行前,都会清楚cookie,但是如果是手动添加的cookie,不会被清除
###########################################################################################################
Cookie Policy 选择cookie的管理策略,建议选择compatibility,兼容性强
<pre name="code" class="java">###########################################################################################################
User-Defined Cookies 用户自定义cookie
###########################################################################################################
深入了解Jmeter的Cookie管理首先,设置是否检查Cookie的有效性,代码在:apache-jmeter-2.9/src/protocol/http/org/apache/jmeter/protocol/http/controlCookieManager.java
public class CookieManager
{
...
private static final boolean CHECK_COOKIES =
JMeterUtils.getPropDefault("CookieManager.check.cookies", true);// $NON-NLS-1$
...
}
然后在 HC3CookieHandler.java 中调用CookieSpec类的validate方法来检查Cookie,如下:
public void addCookieFromHeader(CookieManager cookieManager,
boolean checkCookies,String cookieHeader, URL url) {
...
if (checkCookies) {
cookieSpec.validate(host, port, path, isSecure, cookie);
}
...
}
最后在HttpClient中的检查Cookie的validate()方法的判断逻辑如下:
src/java/org/apache/commons/httpclient/cookie/CookieSpecBase.java
(在线代码浏览:http://hc.apache.org/httpclient-3.x/xref/org/apache/commons/httpclient/cookie/CookieSpecBase.html)
public void validate(String host, int port, String path,
boolean secure, final Cookie cookie) {
..
if (!path.startsWith(cookie.getPath())) {
throw new MalformedCookieException(
"Illegal path attribute \"" + cookie.getPath()
+ "\". Path of origin: \"" + path + "\"");
}
...
}