我确实在JMeter中创建了一个简单的测试用例。
打开表单及其所有内容(css,图像等):
等一下......
发布值
收到“谢谢”页面。 - GET /谢谢
在第一个GET的响应中是一个包含令牌的隐藏输入字段。此令牌也需要包含在POST中。 现在我使用JMeter的“正则表达式提取器”从响应中获取令牌。到现在为止还挺好。 然后,在检索完所有其他内容后,我使用令牌参数的值字段中的RegExp-Extractor中的变量名创建POST消息。 但是......在执行测试用例时,它会填充给定的默认值,而不是令牌的实际值。
所以...调试此问题的第一步是在获取令牌后直接添加一个伪HTTP-GET请求。在此GET请求中,我还将令牌参数与令牌变量一起添加为值,但现在我可以通过查看我的Web服务器上的访问日志来轻松检查参数。 在这种情况下...... URL看起来很有希望。它包含GET中的实际令牌值,但它仍然使用POST中的默认值。
调试的第二步是使用“Debug Sampler”和“View Results Tree”。 通过在我发现的不同步骤之间移动Debug Sampler,我收到CSS后,token-variable的值又恢复为默认值。
所以...现在最大的问题是...... 在测试脚本结束之前,如何让JMeter记住我的变量值?
答案 0 :(得分:1)
正如您所发现的那样,您的问题来自对jmeter范围规则的误解。
在您的情况下,只需将请求的后处理器放入将为您提供包含子节点的响应。 此外,我认为您不需要与其他线程共享此令牌,因此请勿使用备用答案中建议的属性。
答案 1 :(得分:0)
props.put("myVar", vars.get("myVar"));
或者使用__setProperty()功能。有关详细信息,请参阅How to Use Variables in Different Thread Groups指南。