进行负载测试,我遇到了需要使用动态变量(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
UPDATE1:
JSF生成的参数:
UPDATE2
使用谷歌浏览器控制台:
我错过了什么?
答案 0 :(得分:2)
对于正则表达式,您需要转义逗号,因为它们可能被视为special characters,因此请使用以下正则表达式:
<input type="hidden" name="javax\.faces\.ViewState" id="javax\.faces\.ViewState" value="(.+?)" autocomplete="off" />
演示:
对于XPath Extractor,如果您的响应不符合XML / XHTML,则可能需要检查Use Tidy框以处理&#34;常规&#34; HTML。
顺便说一句,您可以针对实时服务器响应验证Regular,XPath,CSS和JSONPath表达式,而无需使用View Results Tree侦听器重新运行测试,有关详细信息,请查看How to Debug your Apache JMeter Script。
答案 1 :(得分:1)
尝试在Regular Expression Extractor中使用此作为正则表达式:
输入类型=&#34;隐藏&#34;命名=&#34; javax.faces.ViewState&#34; ID =&#34; javax.faces.ViewState&#34;值=&#34;&#34(+。);
Here你可以看到它在工作。