Soapui& Xpath:一个简单节点的断言

时间:2010-03-29 12:51:39

标签: soapui

我目前正在使用SoapUI免费版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'])

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

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

有什么想法吗?

此致

5 个答案:

答案 0 :(得分:2)

您可以使用FirstObject XML Editor工具生成Xpath。它会像您在soapUI Pro中一样自动生成XPath,然后您可以在soapui免费版本中使用该Xpath。

答案 1 :(得分:1)

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

我不是百分之百确定你要做什么。鉴于此回应:

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

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

然后您的“预期结果”应为:<b id="2" />

答案 2 :(得分:0)

让专业版试用旋转,你会发现它内置了一个不错的xpath专家。当存在样本请求时,您可以选择要查找的值,它将生成xpath并显示值。很酷。将xpath复制/粘贴回免费版本,然后就可以了。或者,如果你像我一样,更加努力让老板为你购买专业版。

答案 3 :(得分:0)

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

如果您将期望从[]更改为<nodeName id=2 />,则应该有效。

答案 4 :(得分:0)

您可以使用断言: // B [@ ID = '2'] 要么 // B [@ ID = 2]

预期成果:

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