【发布时间】:2021-09-19 00:27:23
【问题描述】:
我是 jmeter 的新手。我使用 blazemeter chrome 插件记录我的脚本。现在在登录时,我得到 需要 Cookie 在您的浏览器上禁用 Cookie。请启用 cookie 并刷新此页面我已设置 CookieManager.save.cookies=true 但没有运气。
【问题讨论】:
标签: cookies jmeter performance-testing jmeter-5.0
我是 jmeter 的新手。我使用 blazemeter chrome 插件记录我的脚本。现在在登录时,我得到 需要 Cookie 在您的浏览器上禁用 Cookie。请启用 cookie 并刷新此页面我已设置 CookieManager.save.cookies=true 但没有运气。
【问题讨论】:
标签: cookies jmeter performance-testing jmeter-5.0
JMeter 不是浏览器,它在协议级别工作。就 Web 服务和远程服务而言,JMeter 看起来像一个浏览器(或者更确切地说,是多个浏览器);但是 JMeter 并没有执行浏览器支持的所有操作。 特别是,JMeter 不执行 HTML 页面中的 Javascript。 它也不像浏览器那样渲染 HTML 页面(可以将响应视为 HTML 等,但不包括时间在任何样本中,并且一次只显示一个线程中的一个样本)。
因此,如果您的页面使用 JavaScript 来检查用户 cookie,则无法绕过此消息,这意味着您可以忽略它。
但是,如果您无法继续进行,则意味着 JMeter 没有发送必要的 Cookie 标头,因此请确保将 HTTP Cookie Manager 添加到您的测试计划中。
如果您添加了 HTTP Cookie 管理器,但仍然看到真正的浏览器发送 cookie 而 JMeter 没有(或发送部分)很可能意味着您的服务器返回格式错误或过期的 cookie,您需要为您的申请。
最后但并非最不重要的一点是,如果您不得不忍受这些格式错误/损坏的 cookie 并且仍需要登录,您可以采用以下解决方法:
将 HTTP Cookie 管理器的“实施”更改为限制较少的内容,即netscape
将下一行添加到 user.properties 文件(位于 JMeter 安装的“bin”文件夹中:
CookieManager.check.cookies=false
Increase JMeter logging verbosity for the HTTP Cookie Manager 将下一行添加到 log4j2.xml 文件:
<Logger name="org.apache.jmeter.protocol.http.control" level="debug" />
这样您就可以找出 cookie 出了什么问题
最后但并非最不重要的一点是,您始终可以使用 Regular Expression Extractor 手动从 Set-Cookie 响应标头中提取 cookie,然后再次手动将它们添加到 HTTP Cookie 管理器或 HTTP Header Manager
【讨论】: