如何在JMeter中修改/添加Cookie

How to modify / add to Cookie in JMeter?

本文关键字:添加 Cookie 修改 JMeter      更新时间:2023-09-26

我是JMeter的新手,需要您的帮助如何修改cookie。

场景如下:我正在测试一个提供多个问题答案的评估/考试网站。当用户做出选择并点击提交按钮时,页面中的JavaScript将他的答案(例如,"answerswers = BBAACDA…")附加到cookie中,并发出下一个GET请求(而不是POST请求!)。

因为,JMeter不执行JavaScript(正如它的手册中经常提到的——它不是浏览器),所以它不能将答案附加到cookie中。因此,我的测试计划无法识别用户交互。

如何添加/追加/修改动态cookie?提前感谢!

——Ishti

在groovy中使用Beanshell预处理器或更好的Jsr223预处理器,并使用这里提到的代码:

  • http://javaworks.wordpress.com/2011/08/05/setting-cookie-in-jmeter/
代码:

import org.apache.jmeter.protocol.http.control.CookieManager;  
import org.apache.jmeter.protocol.http.control.Cookie;
CookieManager manager = sampler.getCookieManager();
Cookie cookie = new Cookie("<NAME>","<VALUE>","<HOST>","/",false,0);
manager.add(cookie);

我必须在代码中实现一些为我工作的更改:

import org.apache.jmeter.protocol.http.control.CookieManager;  
import org.apache.jmeter.protocol.http.control.Cookie;
CookieManager manager = ctx.getCurrentSampler().getCookieManager();
Cookie cookie = new Cookie("<NAME>","<VALUE>","<DOMAIN>","<PATH>",false,0, true, true, 0);
manager.add(cookie);

在http://jmeter.apache.org/api/org/apache/jmeter/protocol/http/control/Cookie.html

中的定义之后

可以在groovy预处理器脚本中手动修改或添加cookie,方法与https://stackoverflow.com/a/38505077/5747304相同。

下面是如何通过浏览cookie管理器中的所有cookie来查找和编辑cookie:

import org.apache.jmeter.protocol.http.control.CookieManager;  
import org.apache.jmeter.protocol.http.control.Cookie;
log.info("#########################################################################");
// cookie manager
CookieManager manager = ctx.getCurrentSampler().getCookieManager();
def NbOfCookies = manager.getCookieCount();
for (def i = 0; i < NbOfCookies; i++) {
    log.info("Cookie n° " + (i+1) + ": " + manager.get(i).getName() + ": " + manager.get(i).getValue());
    if (manager.get(i).getName() == "Cookie_name_to_find") {
        log.info("MAJ of Cookie_name_to_find");
        manager.get(i).setValue("New_cookie_value");
        log.info("-> " + manager.get(i).getName() + ": " + manager.get(i).getValue());
    }
}
log.info("#########################################################################");

这是cookie管理器方法的列表,如添加或删除…: http://jmeter.apache.org/api/org/apache/jmeter/protocol/http/control/CookieManager.html。

这是一个cookie方法列表,用于修改更多属性,如域名,有效期…: http://jmeter.apache.org/api/org/apache/jmeter/protocol/http/control/Cookie .html

应该知道,根据cookie管理器中选择的标准,手动修改的值在请求之前仍然可以被管理器修改,所以您必须小心。