我是JMeter的新手,需要你的帮助才能修改cookie。
以下是该方案: 我正在测试一个评估/测试网站,提供多个问题答案。当用户进行选择并点击提交按钮时,页面中的JavaScript会将他的答案(例如,"答案= BBAACDA ...")附加到cookie并发出下一个GET请求(而不是一个POST请求!)。
由于JMeter不执行JavaScript(如其手册中常见的那样 - 它不是浏览器),因此无法将答案附加到cookie中。因此,我的测试计划无法识别用户交互。
如何添加/添加/修改动态Cookie?提前谢谢!
- Ishti
答案 0 :(得分:3)
使用Beanshell预处理器或更好的Jsr223预处理器和groovy并使用此处提到的代码:
代码:
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);
答案 1 :(得分:0)
我必须在对我有用的代码中实现一些更改:
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
中的定义答案 2 :(得分:0)
可以在常规预处理器脚本中手动修改或添加cookie,方法与Syntax section here相同。
以下是如何通过浏览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管理器方法列表......:https://stackoverflow.com/a/38505077/5747304。
以下是修改域名及其到期日期等更多属性的Cookie方法列表:http://jmeter.apache.org/api/org/apache/jmeter/protocol/http/control/CookieManager.html .html
应该知道,根据cookie管理器中选择的标准,经理仍然可以在请求之前修改手动修改的值,因此您必须小心。