【问题标题】:How to modify / add to Cookie in JMeter?如何在 JMeter 中修改/添加到 Cookie?
【发布时间】:2018-01-18 20:07:19
【问题描述】:

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

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

由于 JMeter 不执行 JavaScript(正如其手册中普遍提到的 - 它不是浏览器),它不能将答案附加到 cookie。结果,我的测试计划无法识别用户交互。

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

--伊什提

【问题讨论】:

  • 您是否尝试过创建一个 HttpHeaderManager 并在那里设置 cookie? jmeter.apache.org/usermanual/…
  • 如果答案对你来说没问题,你应该接受它,以便对其他人有帮助
  • 抱歉,我正在处理它。到目前为止,我无法解决这个问题。一旦我得到任何结果,我会尽快通知你。谢谢。

标签: javascript cookies jmeter


【解决方案1】:

使用 Beanshell 预处理器或更好的带有 groovy 的 Jsr223 预处理器,并使用此处提到的代码:

代码:

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);

【讨论】:

  • 对于 :这些应该是我的参数,对吧?例如,NAME = Answers,VALUE=ABCDABB----。 HOST 的价值是什么?谢谢。
  • 是的,主机值与您的测试在 Http 采样器中使用的值相同
  • 非常感谢!快速运行会显示一些警告和错误。我将不得不更深入地挖掘。现在我在工作中遇到了其他事情。一定会尽快回来的!
  • 错误是由于示例代码 (”) 中的引号引起的。一旦我将它们更改为正确的 (") 就没有错误,它可以根据需要添加到 cookie 中。:-)
【解决方案2】:

我必须在对我有用的代码中进行一些更改:

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中的定义

【讨论】:

    【解决方案3】:

    可以在 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管理器中选择的标准,手动修改的值仍然可以在请求之前被管理器修改,所以要小心。

    【讨论】:

      猜你喜欢
      • 2021-07-24
      • 1970-01-01
      • 2021-11-26
      • 2012-10-09
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 2021-11-30
      • 1970-01-01
      相关资源
      最近更新 更多