JMeter JSR223 后处理器获取 Cookie

JMeter JSR223 PostProcessor GET COOKIE

我在 JMeter 中发现的每一个 link cookie 都是基于 cookie 管理器的。但不幸的是,如果更改路径,JMeter 会丢失 cookie,并且我无法更改 JMeter 属性以使用相关解决方案,因此我必须在请求后使用 JSR223 PostProcessor 设置变量。

但我找不到任何相关信息 - 每个 link 都是关于使用 HTTP Cookie 管理器的。

请帮助解决没有 Cookie 管理器的问题。

blazemeter 有一个关于 creating cookies in JSR223

的很好的例子
import org.apache.jmeter.protocol.http.control.*    
//Get cookie manager
CookieManager cm = sampler.getCookieManager()    
//Set cookie currency to EUR
cm.addFile("C:/work/jmeter-scripts-samples/cookie.txt")

The method CookieManager.addFile(String cookieFile) adds the cookie defined in the cookieFile parameter (cookie.txt in this example) to the cookie manager.

We will create a cookie by adding the following line to the PreProcessor script:

Cookie c = new Cookie("sampleCookie", "sample", "opencart.abstracta.us", "/", false, 1557578515)

首先描述的情况听起来很奇怪,JMeter 应该能够解析给定的 cookie:

  1. cookie 有效(完全符合 RFC 6265
  2. HTTP Request 采样器配置正确(域匹配 cookie 域,路径匹配 cookie 路径等)

如果您绝对确定您的应用程序正在做它应该做的事情(包括设置无效的 cookie),您可以通过以下方式减少 HTTP Cookie Manager 的限制来解决这个问题:

  1. 将下一行添加到 user.properties 文件:

    CookieManager.check.cookies=false
    
  2. 使用另一个 Cookie Policy,即 netscape

如您所见,即使 DomainPath 为空,JMeter 仍将 cookie 添加到请求中:

更多信息:HTTP Cookie Manager Advanced Usage - A Guide


在任何情况下,您都应该能够从 Set-Cookie header using Regular Expression Extractor 中提取 cookie 并将其添加到请求中,如上所述。