如何使用xpath提取器提取多个值并在beanshell后处理器中使用它?

时间:2017-06-19 09:18:58

标签: csv xpath soap jmeter

我使用xpath提取器从soap响应中提取特定值并使用Beanshell后处理器写入csv文件但是在这里,我面临的问题就像我需要来自soap响应的多个值。

请任何人提供如何使用xpath提取器从soap响应中提取多个值并将其保存在单独的变量中并写入csv文件。

例如:

肥皂反应:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <soap:Body>
      <ValidateCardResponse xmlns="http://service.clp.eks.com">
         <out>
            <birthDate xmlns="http://wsform.clp.eks.com">01-01-73</birthDate>
            <cardno xmlns="http://wsform.clp.eks.com">23016077</cardno>
            <customerName xmlns="http://wsform.clp.eks.com">gopi</customerName>
            <flag xmlns="http://wsform.clp.eks.com">TRUE@19@FALSE</flag>
            <memberLevel xsi:nil="true" xmlns="http://wsform.clp.eks.com"/>
            <points xmlns="http://wsform.clp.eks.com">43292.65</points>
            <reason xmlns="http://wsform.clp.eks.com">SUCCESS</reason>
         </out>
      </ValidateCardResponse>
   </soap:Body>
</soap:Envelope>

我需要两个参数来保存它们在每个记录的csv文件中,即点数和原因,因为案例卡无效,因此卡片无效时会出现原因。 请提供如何执行此操作,如果我使用两个xpath提取器,那么我将收到错误消息。

1 个答案:

答案 0 :(得分:2)

  1. 添加XPath Extractor作为返回XML
  2. 的请求的子项
  3. 按如下方式配置:

    • 参考名称:任何有意义的内容,即myVar
    • XPath查询://points/text() | //reason/text()
  4. 它将生成以下JMeter变量:

    myVar=43292.65
    myVar_1=43292.65
    myVar_2=SUCCESS
    myVar_matchNr=2
    
    1. 在 XPath Extractor
    2. 之后添加JSR223 PostProcessor
    3. 将以下代码放入&#34;脚本&#34;面积:

      new File('myFile.csv') << vars.get('myVar_1') << ',' << vars.get('myVar_2') << System.getProperty('line.separator')
      
    4. 有关使用XPath语言从XML,XHTML和HTML响应中提取数据的更多详细信息,请参阅Using the XPath Extractor in JMeter文章。

      请注意,最好使用Sample Variables属性将JMeter变量存储到文件中。如果它因任何原因不适合您,请考虑使用JSR223 Elements而不是Beanshell,因为Beanshell解释器在高负载时会遇到性能问题。