如何存储来自XPath Extractor的单个结果

时间:2017-09-13 17:49:15

标签: regex jmeter jmeter-3.2

我有一个返回以下XML的HTTP请求

<?xml version="1.0" encoding="UTF-8"?>
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
       <soapenv:Body>
          <NS1:obterAtividadesResponse xmlns:NS1="http://www.multiplan.com.br/APL/CLIE/SN/BPM/v1">
             <atividades>
                <atividade>
                   <instancia>
                      <idInstancia>2024</idInstancia>
                   </instancia>
                   <idAtividade>12887</idAtividade>
                   <nomeProcesso>Nota Fiscal ao Pagamento - Resumido</nomeProcesso>
                   <nomeAtividade>Aprovar Pagamento</nomeAtividade>
                   <statusAtividade>Received</statusAtividade>
                   <statusInstancia>Active</statusInstancia>
                   <dataLimite>2017-09-13T16:08:44.994+00:00</dataLimite>
                   <snapshot>76</snapshot>
                   <dadosNegocio>
                      <name>pedido</name>
                      <value>4500529987</value>
                   </dadosNegocio>
                </atividade>
             </atividades>
          </NS1:obterAtividadesResponse>
       </soapenv:Body>
    </soapenv:Envelope>

我尝试使用XPath Extractor提取idAtividade内容并将结果保存在atividadeId变量上,但是它会将其保存在atividadeId_1上,如下面的调试采样器结果中所示:

atividadeId=
atividadeId_1=12887
atividadeId_matchNr=1

我使用以下xpath查询:

//atividades/atividade/idAtividade/text()

enter image description here

有没有办法让它在我需要的时候起作用?

由于

3 个答案:

答案 0 :(得分:1)

您应该选中Return entire XPath fragment instead of text content?复选框。

他们将使用您的表达式获取唯一的文本。请参阅manual

还要考虑使用正则表达式提取器。

答案 1 :(得分:1)

如果您有多个atividade实例作为响应,您可以使用以下XPath表达式来获取第一个匹配项:

//atividades/atividade[1]/idAtividade/text()

或者,您可以选择idAtividade节点值nomeAtividade等于Aprovar Pagamento,例如:

//atividades/atividade[nomeAtividade/text()='Aprovar Pagamento']/idAtividade

但是,如果您只有一个atividade实例,则表达式应该可以正常工作,您可以使用"XPath Tester" mode of the View Results Tree listener进行测试。

JMeter Xpath Tester

有关XPath语法,轴,函数等的全面信息,请参阅XPath TutorialXPath Language Reference

答案 2 :(得分:0)

我的错误,我的测试有一个BeanShell预处理器将atividadeId变量的值设置为空白,我不知道它是在每个采样器后执行的。