參考網址:
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
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 + "\"");
}
...
}