首页 文章

在JMeter的HTTP请求帖子中使用cookie值

提问于
浏览
4

我遇到的问题类似于这篇文章中的问题:JMeter; session cookie,但是从不同的角度来看 .

相似性位于帖子的底部,OP写道:

如何...我可以为每个用户设置并提交一个唯一的cookie,其值是从第一个响应标头中提取的吗?

我们使用JMeter进行负载测试,需要让几个用户一次登录我们的电子邮件客户端 . 我们的网站(和测试计划)的工作方式是:

  • 输入用户名/密码,单击“登录” .

  • 点击电子邮件 .

  • 在cookie中接收身份验证令牌(用于保持登录到电子邮件客户端) .

  • 与电子邮件客户端交互(打开文件夹,将电子邮件标记为已读等)后,在帖子正文中发送身份验证令牌 .

问题是auth令牌没有以一种可以在POST请求中使用的方式存储为值(并且因为auth令牌不是作为cookie发送的,我们不能简单地存储它并发送它使用HTTP Cookie管理器) . Cookie最初设置如下:

AUTH_TOKEN=(long string of letters, numbers, and underscores); Domain=.ourdomain.net; Path=/

我们尝试了以下方法从cookie中提取auth令牌值:

  • 使用正则表达式提取器从"Click Email"步骤的响应头中提取值 . 我们尝试过两个正则表达式;两者都只是让JMeter在运行测试时使用默认的身份验证令牌值:

  • AUTH_TOKEN \ =(\ w);

  • AUTH_TOKEN =([^;]);

  • 在user.properties中定义属性"CookieManager.save.cookies=true"(如用户手册所示)和"CookieManager.check.cookies=false"(如此线程中所示),然后在帖子正文中使用"$" .

  • 使用其中一个或两个,JMeter将 ${COOKIE_AUTH_TOKEN} 设置为帖子正文中的auth令牌值 .

  • 我们知道$ 是正确的格式,因为这与JMeter正在存储的其他cookie一起使用 .

我已阅读了许多帖子,但没有人处理过这个具体问题 . 几周前我刚开始学习如何使用JMeter,所以我不知道该怎么做,任何帮助都会非常感激 . 谢谢!

1 回答

  • 6

    问题实际上是由于发送到服务器的错误请求引起的,然后发送空白响应 . 一旦我们拆除并重写了整个测试计划(我们使用的实际上是另一个测试计划的修改版本)并且在user.properties中使用了CookieManager.save.cookies = true,我们就可以使用$ 并获取正确的 Value .

相关问题