Невозможно определить значение тега XML без пространства имен из XML Ответ - PullRequest
0 голосов
/ 24 февраля 2020

Я изучаю автоматизацию API с помощью SOAP UI Tool. Я начал практиковаться, используя калькулятор Soap API-сервис "http://www.dneonline.com/calculator.asmx". Когда я запускаю тест API, он выдает правильный вывод.

Запрос:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tem="http://tempuri.org/">
   <soap:Header/>
   <soap:Body>
      <tem:Multiply>
         <tem:intA>10</tem:intA>
         <tem:intB>5</tem:intB>
      </tem:Multiply>
   </soap:Body>
</soap:Envelope>

Ответ:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <soap:Body>
      <MultiplyResponse xmlns="http://tempuri.org/">
         <MultiplyResult>50</MultiplyResult>
      </MultiplyResponse>
   </soap:Body>
</soap:Envelope>

Я не могу проверить результат операции умножения, поскольку тег значения MultiplyResult присутствует без пространства имен. В окне подтверждения можете подсказать, как я могу найти этот тег через XML? Поэтому я могу написать утверждения, чтобы он автоматически проверял результат операции умножения.

1 Ответ

0 голосов
/ 26 февраля 2020

Не уверен, как использовать окно подтверждения, но чтобы получить значение ответа в свойстве, вы можете настроить шаг Передача свойства. Для XPath на этом шаге

//*[local-name()='MultiplyResponse']/*[local-name()='MultiplyResult']/text()

должно работать. Вы также можете сделать это программно в Groovy шаге так:

import com.eviware.soapui.support.XmlHolder
def xml = new XmlHolder(context.response)
def responseValue = xml.getNodeValue("//*:MultiplyResponse /*:MultiplyResult")
assert responseValue == '50'
...