【问题标题】:JMETER: Not able to add Cookie to requestJMETER:无法将 Cookie 添加到请求中
【发布时间】:2020-01-27 19:53:22
【问题描述】:

第一次发帖,长期阅读 - 对于我的一个性能测试,其中一个请求没有通过 cookie。我一直在尝试我在这里和其他地方在线找到的许多建议,但我似乎仍然无法手动将 cookie 添加到任何请求中。

所以我现在要做的只是按照 Blazemeter 的示例进行操作,即使使用我的基本设置,我仍然无法添加 cookie。我必须遗漏一些简单的东西,而且我的头发已经用完了。

(我还不能发图片,所以图片链接在下面)

Jmeter 版本 - 5.0 r1840935

User.Properties 已更新 -

CookieManager.check.cookies=false
CookieManager.save.cookies=true

我有 ThreadGroup 级别的 HTTP Cookie 管理器。 cookie 策略设置为标准,但我也尝试使用 Default 没有区别。 HTTP 请求具有以下设置: 服务器名称:blazedemo.com,方法:GET,路径:密码/重置

在 HTTP 请求下的 JSR223 预处理器(Groovy 2.4.15 / Groovy Scripting 2.0)中,我的代码如下所示(带有一些调试语句)

 import org.apache.jmeter.protocol.http.control.CookieManager;
import org.apache.jmeter.protocol.http.control.Cookie;

//Get cookie manager
CookieManager cm = ctx.getCurrentSampler().getCookieManager()
Cookie cookie = new Cookie("sampleCookie", "sample", "opencart.abstracta.us", "/Mytest/done", false, 1557578515)
cm.add(cookie)
Cookie c=cm.get(0)
log.info("*********Cookie #3:" + c.getName() + "cookie value: " + c.getValue())
log.info("******************** Cookies count: " + cm.getCookieCount())

Jmeter 调试日志显示以下内容,因此 cookie 似乎已成功添加到存储中,我认为它应该可以工作。

2020-01-22 19:10:35,936 DEBUG o.a.j.p.h.c.CookieManager: **Add cookie to store** opencart.abstracta.us  TRUE    /Mytest/done    FALSE   1557578515  sampleCookie    sample
2020-01-22 19:10:35,936 INFO o.a.j.m.JSR223PreProcessor: *********Cookie #3:sampleCookiecookie value: sample
2020-01-22 19:10:35,936 INFO o.a.j.m.JSR223PreProcessor: ******************** Cookies count: 1

但是,日志也显示没有为该请求找到 cookie -

2020-01-22 19:10:35,938 调试 o.a.j.p.h.c.HC4CookieHandler:找到 0 个 cookie 用于 http://blazedemo.com/password/reset

查看请求正文时,我看到以下内容:

GET http://blazedemo.com/password/reset
GET data:
[no cookies]

我没有看到语法错误,但我的某些设置是否不正确?如果我在“用户定义的 Cookie”中向 Cookie 管理器添加一个 cookie,该 cookie 确实会传递给请求。

TestPlan Image

【问题讨论】:

  • 今早又看了一遍,HOST好像不对。由于该问题,未添加 cookie。我想昨晚有点累了!

标签: cookies jmeter


【解决方案1】:
  1. 您正在为域 opencart.abstracta.us 和路径 /Mytest/done 添加 cookie
  2. 您正在访问域 blazedemo.com 和路径 /password/reset
  3. 您希望在请求中看到 cookie - 这不会发生

根据RFC 6265,此行为是完全可以预期的,如果您想查看以编程方式生成的 cookie - 它的域和路径必须与 HTTP Request 采样器中的域/路径匹配

所以改变这一行:

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

到这个:

Cookie cookie = new Cookie("sampleCookie", "sample", "blazedemo.com", "/password/reset", false, 1557578515)

您的方案应该开始按预期工作。

参考资料:

【讨论】:

  • 是的 - 谢谢 Dmitri - 100% 的问题!我没有意识到路径必须完全匹配——我没有完全理解这些 cookie 是如何工作的!更改后,一切都按预期工作!感谢您的帮助!
【解决方案2】:

HTTP Cookie 管理器像浏览器一样存储和发送 cookie,因此最好先在浏览器的开发人员工具中手动验证请求/流程,无论是否有任何 cookie。

因为 Cookie 是网络服务器在较早的响应标头中传递给您的网络浏览器的消息 [例如set-cookies: ] 和浏览器在下一个请求中发送的值相同。

同样,HTTP cookie 管理器也在工作。

因此,您需要首先验证您是否从服务器获取任何 cookie。

如果没有,Jmeter 不会发回。

问候, 纳文·雷

【讨论】:

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