进行负载测试时,我在需要使用动态变量 (javax.faces.ViewState) 的情况下运行。
解决方案是使用 XPath 或正则表达式提取器。
它们都不起作用(...&javax.faces.ViewState=%24%7Bvar1%7D):
我使用的变量的值是
<input type="hidden" name="javax\.faces\.ViewState" id="javax\.faces\.ViewState" value="(.+?)"autocomplete="off" />
和
//input[@id='javax.faces.ViewState']/@value
来源:http://se7so.blogspot.com/2012/12/apache-jmeter-along-with-jsf-pages.html
更新 1:
JSF生成的参数:
更新 2
使用谷歌浏览器的控制台:
我错过了什么?
最佳答案
对于正则表达式,您需要转义逗号,因为它们可能被视为 special characters ,所以使用下面的正则表达式:
<input type="hidden" name="javax\.faces\.ViewState" id="javax\.faces\.ViewState" value="(.+?)" autocomplete="off" />
演示:
对于 XPath 提取器,如果您的响应不符合 XML/XHTML,您可能需要检查 Use Tidy用于处理“常规”HTML 的框。
顺便说一下,您可以根据实时服务器响应验证您的 Regular、XPath、CSS 和 JSONPath 表达式,而无需使用 View Results Tree 重新运行测试。听众,查看How to Debug your Apache JMeter Script了解详情。
关于regex - XPath 和正则表达式都不能在 JMeter 3.0 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39035930/