Как использовать запрос 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 для вас, которые вы можете использовать.
Я нашел эту функцию случайно, так как это не так видимый. Может, это тоже поможет...