1

我目前正在使用 SoapUI Free edition 3.2-beta 2。我对 Xpath 断言有一个奇怪的问题:

我有这个回应:

(...) 我正在使用这个 xpath 来断言 id='2' 的“niveau”在响应中:

Xpath 表达式;

//*:niveau[@id='2']

预期的结果是:

<mod0911:niveau id="2" libelle="Immatriculation" ordre="0" taille="0"/>

但是我有这个错误消息:XPathContains 比较失败,期望 [],实际是 [null]

但如果我试试这个:

exists(//*:niveau[@id='2'])

预期的结果是:真的它有效!!?

但是这种语法很难阅读和维护&我想使用第一种语法(我试图忽略命名空间,添加它们......仍然不起作用)。

有任何想法吗?

问候

4

5 回答 5

2

您可以使用 FirstObject XML 编辑器工具生成 Xpath。它会自动为您的选择生成 XPath,就像您在 soapUI Pro 中所做的那样,然后您可以在您的 soapui 免费版本中使用该 Xpath。

于 2012-10-23T05:33:03.817 回答
1

您声明的 XPath 实际上是针对响应中的 XML 运行的。然后它将它与“预期结果”中的文本进行比较。

我不是 100% 确定你想要做什么。鉴于此响应:

<root>
  <a>
    <b id="2" />
  </a>
  <c>
  </c>
</root>

如果你把它放在"Declare" ://b[@id=2]中,它将针对 XML 运行 XPath。XPath(未经测试)应该只选择<b>元素。

那么你的“预期结果”应该是:<b id="2" />.

于 2010-03-30T19:13:32.390 回答
0

您可以使用断言: //b[@id='2'] 或 //b[@id=2]

预期结果:

http://i.stack.imgur.com/3o2xx.png

于 2014-01-20T13:06:57.730 回答
0

您应该不仅包含节点的值,还应包含 XML 标记。

如果您将期望从 [ ] 更改为 <nodeName id=2 />它应该可以工作。

于 2012-10-23T13:31:08.110 回答
0

试一试专业版试用版,您会发现它内置了一个不错的 xpath 专家。有了示例请求,您只需选择您要查找的值,它将生成 xpath 并向您显示该值。很酷。将 xpath 复制/粘贴回免费版本,一切就绪。或者,如果您像我一样,请更加努力地让您的老板为您购买 Pro 版本。

于 2010-04-10T16:22:19.270 回答