Javascript Jmeter xpath提取器未为有效xpath提供节点值

Javascript Jmeter xpath提取器未为有效xpath提供节点值,javascript,xml,soap,xpath,jmeter,Javascript,Xml,Soap,Xpath,Jmeter,我使用Xpath提取器从XML响应中查找节点值,但每次执行时Jmeter都会抛出一个错误,错误如下: jmeter.extractor.XPathExtractor:处理时发生TransformerException //*[本地名称='RequestID'][2]/text-1 Jmeter://*[local name='RequestID'][2]/text中使用的xpath表达式 我在线检查了xpath表达式及其有效性,并返回了预期值。不确定jmeter有什么问题 以下是xml: <

我使用Xpath提取器从XML响应中查找节点值,但每次执行时Jmeter都会抛出一个错误,错误如下:

jmeter.extractor.XPathExtractor:处理时发生TransformerException //*[本地名称='RequestID'][2]/text-1

Jmeter://*[local name='RequestID'][2]/text中使用的xpath表达式

我在线检查了xpath表达式及其有效性,并返回了预期值。不确定jmeter有什么问题

以下是xml:

<?xml version='1.0' encoding='UTF-8'?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Header>
<urn1:ServiceControl xmlns:urn1="urn:com:sample:global:common:schema:ServiceControl:2">
<urn1:EmergencyRequestIndicator>true</urn1:EmergencyRequestIndicator>
<urn1:VersionID>1.0</urn1:VersionID>
<urn1:LanguageCode type="Advisor">en-US</urn1:LanguageCode>
<urn1:LanguageCode type="Subscriber">en-US</urn1:LanguageCode>
<urn1:ApplicationID>GAA</urn1:ApplicationID>
<urn1:LogicalID>W2DZD0Y06</urn1:LogicalID>
<urn1:ComponentID>GAA-ocsComponent</urn1:ComponentID>
<urn1:ReferenceID>CorrelationId</urn1:ReferenceID>
<urn1:SentTimeStamp>2010-04-23T14:27:10Z</urn1:SentTimeStamp>
<urn1:MessageType>ocsMessageType</urn1:MessageType>
<urn1:ChannelID>GAA</urn1:ChannelID>
<urn1:TaskID>ocsTask</urn1:TaskID>
<urn1:Environment>4.0</urn1:Environment>
<urn1:BODID>GAA-CorrelationId</urn1:BODID>
<urn1:Asynchronous>
<urn1:TimeToLive xmlns:urn1="urn:com:sample:global:common:schema:ServiceControl:2">10</urn1:TimeToLive>
<urn1:PassThroughData xmlns:urn1="urn:com:sample:global:common:schema:ServiceControl:2">
<urn1:Key xmlns:urn1="urn:com:sample:global:common:schema:ServiceControl:2">1</urn1:Key>
<urn1:Value xmlns:urn1="urn:com:sample:global:common:schema:ServiceControl:2">10</urn1:Value>
</urn1:PassThroughData>
<urn1:ExpectedResponseTime xmlns:urn1="urn:com:sample:global:common:schema:ServiceControl:2">30</urn1:ExpectedResponseTime>
<urn1:RequestID xmlns:urn1="urn:com:sample:global:common:schema:ServiceControl:2">100</urn1:RequestID>
<urn1:RetryStrategy xmlns:urn1="urn:com:sample:global:common:schema:ServiceControl:2">
<urn1:Name xmlns:urn1="urn:com:sample:global:common:schema:ServiceControl:2">RetryName</urn1:Name>
<urn1:LongTermRetryIndicator xmlns:urn1="urn:com:sample:global:common:schema:ServiceControl:2">false</urn1:LongTermRetryIndicator>
<urn1:ResponseRequiredOnErrorPoolMoveIndicator xmlns:urn1="urn:com:sample:global:common:schema:ServiceControl:2">true</urn1:ResponseRequiredOnErrorPoolMoveIndicator>
</urn1:RetryStrategy>
<urn1:ReplyRequiredIndicator xmlns:urn1="urn:com:sample:global:common:schema:ServiceControl:2">true</urn1:ReplyRequiredIndicator>
<urn1:ReplyToMessageID xmlns:urn1="urn:com:sample:global:common:schema:ServiceControl:2">1000</urn1:ReplyToMessageID>
<urn1:CallbackURI xmlns:urn1="urn:com:sample:global:common:schema:ServiceControl:2">urn1:www:com</urn1:CallbackURI>
<urn1:FaultURI xmlns:urn1="urn:com:sample:global:common:schema:ServiceControl:2">urn1:www:com</urn1:FaultURI>
<urn1:ProcessingModes xmlns:urn1="urn:com:sample:global:common:schema:ServiceControl:2">ProcessingMode</urn1:ProcessingModes>
</urn1:Asynchronous>
<urn1:Synchronous/>
</urn1:ServiceControl>
</S:Header>
<S:Body>
<ns2:ServiceRequestReference xmlns="urn:com:sample:ocs:common:schema:AutoTask:11" xmlns:ns10="urn:com:sample:global:common:schema:CallContext:2" xmlns:ns11="urn:com:sample:ocs:common:schema:ServiceFault:11" xmlns:ns12="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:ns13="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:ns14="http://www.w3.org/2000/09/xmldsig#" xmlns:ns15="urn:com:sample:global:common:schema:ServiceControl:2" xmlns:ns2="urn:com:sample:ocs:common:schema:CommonTypes:11" xmlns:ns3="urn:com:sample:ocs:common:schema:AutoInformation:11" xmlns:ns4="urn:com:sample:ocs:common:schema:UnitConfiguration:11" xmlns:ns5="urn:com:sample:ocs:common:schema:SubscriberRequest:11" xmlns:ns6="urn:com:sample:ocs:common:schema:ElectricAuto:11" xmlns:ns7="urn:com:sample:ocs:common:schema:EmergencyRequest:11" xmlns:ns8="urn:com:sample:ocs:common:schema:AutoRequest:11" xmlns:ns9="urn:com:sample:ocs:common:schema:AutoConnection:11">
<ns2:RequestID>2648331</ns2:RequestID>
<ns2:isProcessingAnotherRequest>false</ns2:isProcessingAnotherRequest>
<ns2:estimatedProcessingTime>0</ns2:estimatedProcessingTime>
</ns2:ServiceRequestReference>
</S:Body>
</S:Envelope>
您可以使用,即,从变量中减去1

假设您使用RequestID作为引用名称,下面的XPath用于获取RequestID

(//*[local-name() = 'RequestID'])[2]/text()
或 //ns2:RequestID/text

下一个Beanshell代码将允许您操作变量

int requestId = Integer.parseInt(vars.get("RequestID"));
requestId = requestId--;
vars.put("RequestID", String.valueOf(requestId));

我不知道您正在描述的环境,但我相信本地名称是一个xpath 2.0函数,因此我将检查此产品是否支持xpath 2.0,而不仅仅是xpath 1.0响应。但是你能帮我理解为什么我需要用Beanshell后置处理器从变量中减去1,我只需要xml中的节点值,获取以下错误错误-jmeter.util.BeanShellInterpreter:调用bsh方法时出错:评估源文件:内联评估:int requestId=Integer.parseIntvars.getRequest_ID_Value;;:类型化变量声明:方法调用Integer.parseInt WARN-jmeter.extractor.BeanShell后处理器:BeanShell脚本org.apache.jorphan.util.JMeterException中的问题:调用bsh方法时出错:eval源文件:内联求值:int requestId=Integer.parseIntvars.getRequest_ID_Value;:类型化变量声明:methodinvocation Integer.parseInti如果您只需要XML中的值,只需输入//ns2:RequestID/text,我对XPath末尾的-1表达式有点困惑。对于Beanshell位-您有不必要的分号。另外,请确保已正确提取变量Request_ID_值,如果它的默认值为null-如果我给出//ns2:RequestID/text,它将不会播放,那么我将得到错误,因为XPathStylesheetDOM3Exception:前缀必须解析为命名空间:ns2-1是我前面提到的错误消息的一部分。对于Beanshell,我仍然不确定该纠正什么。我没有任何不必要的分号。