jmeter从响应数据中获取值

时间:2012-06-19 22:06:51

标签: regex xpath jmeter beanshell extractor

我有一个关于从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 个答案:

答案 0 :(得分:5)

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

enter image description here

让我知道这是否适合您

答案 1 :(得分:2)

试试这个xpath:

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

答案 2 :(得分:1)

  1. 如果您使用XPath Extractor解析HTML(而非XML!..)响应,请确保使用Tidy(宽容解析器)选项已检查。
    < / p>

  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插件:

答案 3 :(得分:0)

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

要了解运行时会发生什么,请使用Debug组件。

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

有关模拟新行的特殊字符,请参阅here

相关问题