我是jmeter的新手。我正在尝试测试登录我的网站说(example.com/session/new)。 我添加了http cookie管理器和2个http请求默认值。 在第一个,访问example.com/session/new并使用正则表达式提取响应数据中的真实性标记元内容="(。+?)" name =" csrf -token" 。现在,在第二个http请求中,我有一个带参数的发布请求 名称:utf值:( tickmark) name:authenticity_token值:$ {token} 姓名:电子邮件价值:test@test.com name:密码值:test。 name:commit value:登录 然后我主张登录后的文本。 当我运行测试时,断言失败。因为它导致404。 在请求中,我可以看到utf8 =%E2%9C%93 +& authenticity_token =%24%7Btoken%7D& email = test%40test.com& password = test& commit = Sign + In。请帮我解决这个问题。
答案 0 :(得分:0)
我知道这是一个老帖子,但我一直在努力解决这个问题,所以我决定发布我的答案,以防它帮助任何人 - 它第一次为我工作。因此,在请求我的站点的登录页面后,html响应中嵌入了以下csrf令牌;
<input type="hidden" name="csrfToken" value="fe5a48ebda7b98cbbf885b4a220ebe0c23b11125-1459096615520-1ac64aa945986cb1bd318d9c"/>
因此,在进行登录页面的初始请求时,如果令牌位于HTML响应的正文中,而不是使用正则表达式提取器,请使用XPath Extractor。
如果您的回复不符合XML / XHTML,请勾选“使用整理”复选框。
对于参考名称,添加您希望引用令牌的引用,例如:令牌。将参数添加到登录请求后,您可以将csrfToken称为$ {token}
然后用于X-Path查询使用;
//输入[@名称= “csrfToken”] / @值
以下教程向您展示了如何使用正则表达式提取器,但它也应该帮助您了解如何更多地设置查询;
答案 1 :(得分:0)
看起来你做的每件事都很好,除了相关性。在解码您的错误网址后,我发现您的关联不起作用。以下是解码网址&#34; utf8 =✓&amp; authenticity_token = $ {token}&amp; email=test@test.com& password = test&amp; commit =登录。&#34;
在你的&#34;正则表达式提取器&#34;添加以下详细信息
1. Reference Name:token
2. Regular Expression : name="csrfToken" value="(.+?)"
3. Template : $1$
4. Match No: 1
Note: Check the occurrences of "csrfToken", if you required first occurrence then enter 1 , if you required 2nd occurrence enter 2 ....etc.