如何从肥皂反应测量仪中检索值

时间:2016-07-24 02:23:18

标签: testing xpath soap jmeter

我有这个soap响应,我需要获取标签platformMessage的值我写了一个xpath查询但是它不起作用,在jmeter中检查日志文件告诉我这个“前缀必须解析为命名空间:ns2”,继承了xpath查询

/S:Envelope[@xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"]/S:Body/ns2:activateProductResponse[@xmlns:ns2="http://ws.business.api.fulfillmentengine.com/"]/return/platformMessage

继承人xml

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
   <S:Body>
      <ns2:activateProductResponse xmlns:ns2="http://ws.business.api.fulfillmentengine.millicom.com/">
         <return>
            <platformCode>1</platformCode>
            <platformMessage>Fail operation.El set-top box ya existe. Code Response:|22098: 22098: 1</platformMessage>
            <responseCode>13</responseCode>
            <responseMessage>Error executing action in platforn</responseMessage>
            <UUID>3cb49b29-513e-11e6-b5db-005056807f0c</UUID>
            <platformName>INTRAWAY</platformName>
         </return>
      </ns2:activateProductResponse>
   </S:Body>
</S:Envelope>

2 个答案:

答案 0 :(得分:0)

在xpath中使用@xmlns:ns2无效,因为尽管外观上的命名空间与属性不同。

如果启用“使用命名空间”,则以下xpath应该有效:

/S:Envelope/S:Body/ns2:activateProductResponse/return/platformMessage

或者,如果您想要一个脏(和慢)的解决方法,您可以像这样引用节点名称:

/*[local-name()='Envelope']/*[local-name()='Body']/*/[local-name()='activateProductResponse]/return/platformMessage

答案 1 :(得分:0)

你应该阅读:

特别注意:

  

作为JMeter所基于的Xalan XPath解析器实现的命名空间限制的工作循环,您可以提供包含命名空间前缀的映射的Properties文件:   prefix1 =完整命名空间1   prefix2 =完整命名空间2   ...   您可以使用以下属性在jmeter.properties文件中引用此文件:

  • xpath.namespace.config

在jmeter.properties中查找此属性,并清楚地解释所有内容