【问题标题】:Neither XPath nor Regular Expression Work on JMeter 3.0XPath 和正则表达式都不适用于 JMeter 3.0
【发布时间】:2016-12-26 10:20:51
【问题描述】:

进行负载测试时,我遇到了需要使用动态变量 (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

使用谷歌浏览器的控制台:

我错过了什么?

【问题讨论】:

  • 在您的第一个屏幕中,您在 XPath 提取器表单中输入了一个正则表达式,对吗?将//input[@id='javax.faces.ViewState']/@value 放在XPath Extractor 中,如果页面上有input 应该可以工作。
  • 你真的尝试过使用Regular Expression Extractor吗?查看响应数据也会很有用...
  • @WiktorStribiżew,它没有用,我更新了问题。 ${var1} 仍然被误解。
  • 使用正则表达式提取器时,请尝试转义所有引号...
  • @IvanMarkovic,带有 //input[@id='javax.faces.ViewState']/@value?使用反斜杠转义?

标签: regex tomcat xpath jsf-2 jmeter


【解决方案1】:

尝试在Regular Expression Extractor 中将其用作正则表达式:

输入类型=“隐藏”名称=“javax.faces.ViewState” id="javax.faces.ViewState" value="(.+?)"

Here你可以看到它正在工作。

【讨论】:

    【解决方案2】:
    1. 对于正则表达式,您需要转义逗号,因为它们可能被视为special characters,因此请使用以下正则表达式:

      <input type="hidden" name="javax\.faces\.ViewState" id="javax\.faces\.ViewState" value="(.+?)" autocomplete="off" />
      

      演示:

    2. 对于 XPath 提取器,如果您的响应不符合 XML/XHTML 标准,您可能需要选中 Use Tidy 框以处理“常规”HTML。

    顺便说一句,您可以根据实时服务器响应验证您的 Regular、XPath、CSS 和 JSONPath 表达式,而无需使用 View Results Tree 侦听器重新运行测试,请查看 How to Debug your Apache JMeter Script 了解详细信息。

    【讨论】:

    • 问题是我总是得到 URL?javax.faces.ViewState=${var1},而我提到了一个默认值“NOTFOUND”。 ${var1} 被视为硬编码值,而不是变量。
    • JMeter 变量对于线程组是 local,如果您的目标是在不同的线程组中重复使用此 ViewState 值,您需要通过以下方式将其转换为 JMeter 属性__setProperty() 函数。说明参考How to Use Variables in Different Thread Groups文章
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-26
    • 1970-01-01
    • 1970-01-01
    • 2013-05-01
    • 2013-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多