处理 SoapUI 输出到 Excel 中 soap 网络服务的空白值

Handling blank values from a soap webservice in SoapUI output to Excel

我有一个 SoapUI 项目和测试套件,它从 Excel 中读取值,将它们放入 SOAP 请求中,发送请求并获取响应,然后将响应值写入另一个 Excel电子表格。到目前为止,还不错。

但是,当 Web 服务 returns 为空值时,SoapUI 会将命名空间标记写入电子表格 <xyz:transactionUID xmlns:xyz="http://xyz.abc.etc">。我想要一种方法,让 SoapUI 在没有从 Web 服务返回时不向单元格写入任何内容。

有人知道怎么做吗?

编辑:

这是用于将值写入电子表格的 XPath:

${myRequest#Response#declare namespace xyz='http://xyz.abc.etc.service'; //xyz:MyOutputWrapper[1]/xyz:MyVerifyResponse[1]/xyz:IdMatchIndicators[1]/xyz:FrstNmMatchInd[1]}

即,这是 DataSink 步骤属性中 'name/value' 下的 'value'。

SoapUI 对您的 XPath 有一些自由

首先,请注意,对于阅读,您可以通过删除命名空间来大大简化您的 XPath:

${myRequest#Response#//*:MyOutputWrapper[1]/*:MyVerifyResponse[1]/*:IdMatchIndicators[1]/*:FrstNmMatchInd[1]}

接下来,对于多个匹配项,SoapUI 将始终抓取第一个:

${myRequest#Response#//*:MyOutputWrapper/*:MyVerifyResponse/*:IdMatchIndicators/*:FrstNmMatchInd}

最后,对于您的情况,这是 重要 一个,如果匹配的节点有一个 text() 节点,SoapUI 将使用它。如果没有 text() 节点,它将为您提供整个节点……这正是您所看到的。在你的情况下,因为你不想要这种行为,你需要明确声明你想要 text() 节点:

${myRequest#Response#//*:MyOutputWrapper/*:MyVerifyResponse/*:IdMatchIndicators/*:FrstNmMatchInd/text()}