【问题标题】:StringIndexOutOfBoundsException in JMeter requestJMeter 请求中的 StringIndexOutOfBoundsException
【发布时间】:2016-10-11 13:18:11
【问题描述】:

为什么我在 POST 请求中得到this exception

我正在尝试使用 JMeter 登录,但无论如何我都无法正常工作。 我有 Cookie Manager HC4CookieHandler/standard,也有正则表达式提取器 jsfViewState/name="javax.faces.ViewState" id="javax.faces.ViewState" value="(.+?)" 检查 Main 和 sub-samples/Body。

但仍处于 POST 登录状态,我收到 this.

我错过了什么?它是正则表达式值吗? javax.facesViewState 有值"-2918962836342094824:7411539759421041608",但不范围"(.+?)" 应该抓住它?

【问题讨论】:

    标签: html jsf jmeter


    【解决方案1】:

    查看您的请求详细信息,您似乎发送的是 ${jsfViewstate} 而不是数值,因此您的正则表达式提取器似乎由于某种原因没有从响应中捕获它。原因可能在于:

    1. 父采样器不包含javax.faces.ViewState 输入,它来自子采样。在这种情况下,您需要将正则表达式提取器范围切换为“主样本和子样本”
    2. 响应标记假定“ViewState”输入被分成两行,因此您的单行正则表达式无法匹配它。

    一些建议:


    您可以考虑使用XPath Extractor 作为替代方案。

    1. 将 XPath Extractor 添加为第一个请求的子项
    2. 配置如下:
      • 申请:Main sample and sub-samples
      • 检查Use Tidy
      • 参考名称:任何有意义的名称,即jsfViewState
      • XPath 查询://input[@id='javax.faces.ViewState']/@value
    3. 禁用(或删除)您的正则表达式提取器
    4. 在需要时将提取的值引用为${jsfViewState}

    XPath 提取器配置:

    演示:

    【讨论】:

    • 我已经切换到“主样本和子样本”,但仍然没有。在调试模式下,我收到此错误 prntscr.com/csityl 在 RegExp Tester 中,我可以使用 <input type="hidden" name="javax\.faces\.ViewState" id="javax\.faces\.ViewState" value="([^"]+)".*/> 找到 viewStates 值,但使用 XPath 查询则不能。
    • 切换到XPath Tester,正则表达式需要不同
    • 现在我只有 javax.faces.application.ViewExpiredException。其余的都是一样的......
    猜你喜欢
    • 2016-12-30
    • 2021-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多