0

我有一个返回以下 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()

在此处输入图像描述

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

谢谢

4

3 回答 3

1

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

他们将使用您的表达方式获取唯一的文本。见手册

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

于 2017-09-13T18:56:11.217 回答
1

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

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

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

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

但是,如果您只有一个atividade实例,您的表达式应该可以正常工作,您可以使用View Results Tree listener 的“XPath Tester”模式对其进行测试。

JMeter Xpath 测试仪

有关XPath 语法、轴、函数等的全面信息,请参阅XPath 教程XPath 语言参考。

于 2017-09-14T05:27:25.900 回答
0

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

于 2017-09-14T01:09:18.267 回答