2

我有一个关于从 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,但没有运气。

非常感谢

4

4 回答 4

5

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

在此处输入图像描述

让我知道这是否适合你

于 2012-06-25T13:30:55.223 回答
2

试试这个 xpath:

//table[@id='AutoNumber2']/tr[8]/td[2]
于 2012-06-30T20:45:56.657 回答
1
  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 插件:

于 2012-06-26T17:01:39.213 回答
0

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

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

乍一看,我发现它不匹配,因为您的正则表达式中缺少新行(以下Case Number:</td>)。

有关模拟新行的特殊字符,请参见此处

于 2012-06-19T22:46:18.793 回答