【问题标题】:jmeter grab value from response datajmeter 从响应数据中获取值
【发布时间】:2023-03-18 14:15:01
【问题描述】:

我有一个关于从 Jmeter 中的 html 响应数据中获取某个值的问题。 我一直在尝试正则表达式和 xpath 提取器(见下文),但没有运气。

这是我收到的响应数据的一部分:

<table border="0" cellpadding="2" cellspacing="1" style="border-collapse: collapse" id="AutoNumber2" bordercolorlight="#999999" bordercolordark="#999999" width="100%">
   <tr> 
      <td class="head" align="center" colspan="2">Routing Sheet</td>
   </tr>

   <tr class="altrow"> 
      <td align="right" width="50%" class="formtext">Today's Date:</td>
      <td valign="top" width="50%" class="formtext">06/19/2012</td>
   </tr>

   <tr class="altrow"> 
      <td align="right" width="50%" class="formtext"> HCSC Received Date:</td>
      <td valign="top" width="50%" class="formtext">06/19/2012</td>
   </tr>

   <tr class="tablerow"> 
      <td align="right" width="50%" class="formtext"> Package Log Date:</td>
      <td valign="top" width="50%" class="formtext">06/19/2012 04:21PM</td>
   </tr>

   <tr class="altrow"> 
      <td align="right" width="50%" class="formtext"> Group Specialist:</td>   
      <td valign="top" width="50%" class="formtext">WATTS, JOHN</td>            
   </tr>

   <tr class="tablerow"> 
      <td align="right" width="50%" class="formtext"> Case Underwriter:</td>
      <td valign="top" width="50%" class="formtext">N/A</td>           
   </tr>    

   <tr class="altrow"> 
       <td align="right" width="50%" class="formtext"> Medical Underwriter:</td>  
       <td valign="top" width="50%" class="formtext">N/A</td>    
   </tr>

   <tr class="tablerow"> 
       <td align="right" width="50%" class="formtext">Case Number:</td>                           
       <td valign="top" width="50%" class="formtext">7402628</td>
   </tr>

我正在尝试获取案件编号。 我一直在尝试正则表达式提取器:

Case Number:</td><td valign="top" width="50%" class="formtext">(.+?)</td>

但是得到了一个空值。

对于 xpath 提取器,我尝试了这个:

//table[@id='AutoNumber2']/tbody/tr[8]/td[2]

但它也不起作用。 我一直在考虑使用 Beanshell 将源代码作为字符串抓取并解析数字。 有没有更好的方法来获取这个数字? 以及如何使用 beanshell 来抓取响应数据的源代码? 我尝试使用 /html 的 xpath,但没有运气。

非常感谢

【问题讨论】:

  • XPath 表达式未选择所需元素的一个原因是提供的 XML 文档中没有 tbody

标签: regex xpath jmeter beanshell extractor


【解决方案1】:

试试这个,我在你的样本上测试过,它可以工作:

让我知道这是否适合你

【讨论】:

    【解决方案2】:

    试试这个 xpath:

    //table[@id='AutoNumber2']/tr[8]/td[2]
    

    【讨论】:

      【解决方案3】:
      1. 如果您使用 XPath Extractor 解析 HTML(不是 XML!..)响应,请确保选中 Use Tidy(容错解析器) 选项。

      2. 您的 xpath 查询应该返回您要提取的值。
        优化您的 xpath 查询,例如

        //table[@id='AutoNumber2']/tbody/tr[td/text()='Case Number:']/td[2]/text()

      3. 要使用 Beanshell 进行解析,请查看:Using jmeter variables in xpath extractor

      4. 您可以首先使用任何其他工具测试您的 xpath 查询 - 至少是 Firefox 插件:

      【讨论】:

        【解决方案4】:

        您可以使用 ViewResultsTree 侦听器组件根据实际响应数据测试和调整正则表达式。

        要了解运行时发生的情况,请使用调试组件。

        乍一看,我发现它不匹配,因为您的正则表达式中缺少新行(在Case Number:&lt;/td&gt; 之后)。

        请参阅here 了解模拟换行的特殊字符。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-07-09
          相关资源
          最近更新 更多