【发布时间】:2012-12-11 02:04:05
【问题描述】:
我遇到了与本文中的问题类似的问题:JMeter; session cookie,但从不同的角度解决。
相似之处在帖子的底部,OP 写道:
如何...我可以为每个用户设置和提交一个唯一的 cookie,其值是从第一个响应标头中提取的?
我们正在使用 JMeter 进行负载测试,并且需要让多个用户同时登录到我们的电子邮件客户端。我们网站(和测试计划)的工作方式是:
- 输入用户名/密码,点击登录。
- 点击电子邮件。
- 在 cookie 中接收身份验证令牌(用于保持登录到电子邮件客户端)。
- 在与电子邮件客户端交互时(打开文件夹、将电子邮件标记为已读等),在帖子正文中发送身份验证令牌。
问题是身份验证令牌没有以可以在 POST 请求中使用的方式存储为值(并且由于身份验证令牌不是作为 cookie 发送的,我们不能简单地存储它并使用 HTTP Cookie 管理器发送)。 cookie 最初是这样设置的:
AUTH_TOKEN=(long string of letters, numbers, and underscores); Domain=.ourdomain.net; Path=/
我们尝试了以下方法从 cookie 中提取身份验证令牌值:
- 使用正则表达式提取器从“单击电子邮件”步骤的响应标头中提取值。我们尝试了两个正则表达式;两者都只是导致 JMeter 在运行测试时使用默认的身份验证令牌值:
- AUTH_TOKEN\=(\w+)\;
- AUTH_TOKEN=([^;]+);
- 在 user.properties 中定义属性“CookieManager.save.cookies=true”(根据用户手册的建议)和“CookieManager.check.cookies=false”(根据本线程的建议),然后使用“${ COOKIE_AUTH_TOKEN}”在帖子正文中。
- 设置其中一个或两个后,JMeter 将
${COOKIE_AUTH_TOKEN}设置为帖子正文中的身份验证令牌值。 - 我们知道 ${COOKIE_cookieName} 是正确的格式,因为它已与 JMeter 存储的其他 cookie 一起使用。
- 设置其中一个或两个后,JMeter 将
我已经阅读了许多线程,但没有一个处理过这个特定问题。几周前我刚刚开始学习如何使用 JMeter,所以我不确定在这里做什么,任何帮助将不胜感激。谢谢!
【问题讨论】:
-
我正在尝试做同样的事情,你让它工作了吗?你试过 CookieManager.save.cookies=true 吗?
-
@marko 实际上我们最终重写了整个东西,现在它正在工作。 CookieManager.save.cookies=true 挽救了这一天,只需向服务器发送正确的请求以在响应中获取正确的 cookie。
-
感谢您的跟进!很高兴知道!有时很难配置 JMeter...