Как использовать запрос Match для SOAP UI

У меня возникли проблемы с использованием редактора MockOperation в SOAP UI.

Я получил этот запрос:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Body>
    <methodName xmlns="http://tempuri.org/" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
      <dataAreaId>error</dataAreaId>
      <pInvoiceList>
      <dataAreaId>NOTTHESAME</dataAreaId>
        ...
      </pInvoiceList>
    </methodName>
  </s:Body>
</s:Envelope>

Я пробовал почти каждое выражение XPATH, но я всегда получаю "отсутствующий матч в запросе"

что заполнить в поле Xpath?

Я попытался:

  • / / dataAreaId / text ()
  • / / dataAreaId/
  • //dataAreaId
  • / dataAreaId / text ()
  • /dataAreaId
  • / methodName / dataAreaId / text ()
  • / methodName / dataAreaId/
  • / methodName / dataAreaId

4 ответов


мне, наконец, удалось получить его на основе ответа от user1740631

Кажется, это было связано с пространствами имен.

синтаксис:

declare namespace tem='http://tempuri.org/';
//tem:methodName/tem:dataAreaId[1]

писать

Для Первого

/ / methodName[1] / dataAreaId[1]

для второй

/ / methodName[1]/pInvoiceList[1] / dataAreaId[1]

*Если у вас есть несколько узлов с одинаковым именем в XML, то вы должны использовать цифры, чтобы найти конкретный узел.


Если вы не заботитесь о пространствах имен, вы можете использовать следующий синтаксис:

XPath1.0

//*[local-name() = 'methodName']/*[local-name() = 'dataAreaId'][1]

XPath2.0

//*:methodName/*:dataAreaId[1]

есть хороший намек: при определении утверждения для Testcase (или, возможно, также В окне макета) есть кнопка "объявить" над полем XPath-Expression -. На самом деле это не похоже на кнопку, пока вы не укажете на нее указателем мыши, поэтому я сначала не понял этого.

просто нажмите на кнопку SoapUI (на самом деле я использую 5.2.1) добавит заявления declare для вас, которые вы можете использовать.

Я нашел эту функцию случайно, так как это не так видимый. Может, это тоже поможет...