XPath JMeter断言:错误“前缀必须解析为名称空间”

时间:2018-09-10 20:15:36

标签: xpath jmeter performance-testing xml-namespaces

我正尝试通过XPath断言命令对标签值使用JMeter XPath Assertion,如下所示:

//m:CurrencyNameResul/text() = Pounds

网络服务响应:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <m:CurrencyNameResponse xmlns:m="http://www.oorsprong.org/websamples.countryinfo">
      <m:CurrencyNameResult>Pounds</m:CurrencyNameResult>
    </m:CurrencyNameResponse>
  </soap:Body>
</soap:Envelope>

我遇到错误

  

前缀必须解析为名称空间

并参考下面的JMeter手册:

NAMESPACES As a work-round for namespace limitations of the Xalan XPath parser implementation on which JMeter is based, you can provide a Properties file which contains mappings for the namespace prefixes:
prefix1=Full Namespace 1
prefix2=Full Namespace 2
…
You reference this file in jmeter.properties file using the property:
xpath.namespace.config

我不明白,所以我的问题是:

  • 属性文件的内容应该是什么?
  • 要放在哪里?

2 个答案:

答案 0 :(得分:3)

以下是操作步骤:

在jmeter / bin文件夹中创建一个名为namespaces.properties的文件,其中包含:

  

m = http://www.oorsprong.org/websamples.countryinfo

在user.properties中设置:

  

xpath.namespace.config = namespaces.properties

最后将您的断言修正为包含以下内容:

  

// m:CurrencyNameResult ='磅'

并选中“使用命名空间”

最后得到:

XPath Assertion configuration

答案 1 :(得分:2)

您可以修改XPath查询以使用name()函数,例如:

   $Record->department = $request->get('department');
$Record->password =bcrypt($request->get('password')) ;

,您将不必弄乱修改属性,重新启动JMeter等。

JMeter Xpath Name

此外,如果您使用local-name()函数,则不必在查询中包括名称空间前缀:

(//*[name() = 'm:CurrencyNameResult'])/text()

更多信息: