Пространство имен для префикса "xsi" не было объявлено в Katalon Studio - PullRequest
1 голос
/ 17 января 2020

В настоящее время я работаю над автоматизированными тестовыми случаями в студии Catalon Я отправляю XML запросы в конечную точку и получаю ответ XML. Всякий раз, когда я хочу проверить текстовый узел элемента ответа xml, он выдает RuntimeException, что пространство имен для префикса не объявлено. Хотя пространство имен xsi объявлено в ответе xml.

Ответ XML выглядит как

<SOAP-ENV:Envelope 
    xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envel" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    ...

    ...
</SOAP-ENV:Envelope>

Очевидно, пространство имен для префикса xsi имеет вид уже определено в конверте SOAP.

Проверка в Katalon Studio

import static org.assertj.core.api.Assertions.*

import com.kms.katalon.core.testobject.RequestObject
import com.kms.katalon.core.testobject.ResponseObject
import com.kms.katalon.core.webservice.keyword.WSBuiltInKeywords as WS
import com.kms.katalon.core.webservice.verification.WSResponseManager

import groovy.json.JsonSlurper
import internal.GlobalVariable as GlobalVariable

RequestObject request = WSResponseManager.getInstance().getCurrentRequest()

ResponseObject response = WSResponseManager.getInstance().getCurrentResponse()

WS.verifyResponseStatusCode(response, 200)
assertThat(response.getStatusCode()).isEqualTo(200)

WS.verifyElementText(response, 'getQuoteResponse.Response.Tarifierung.Verkaufsprodukt.Produkt.Beitrag[0].Betrag.Betrag', '630.68')

Это подтверждает, что код ответа равен 200. Это работает, как задумано. После этого я хочу убедиться, что текстовое значение данного узла getQuoteResponse.Response.Tarifierung.Verkaufsprodukt.Produkt.Beitrag[0].Betrag.Betrag является ожидаемым значением. Путь для этого узла напрямую берется из ответа с CTRL + K. Это должно работать в моих глазах. Но это не так.

Исключение

ERROR:  'Namespace für Präfix "xsi" wurde nicht deklariert.'
2020-01-17 16:57:56.439 ERROR c.k.k.core.keyword.internal.KeywordMain  - ❌ Unable to verify element text (Root cause: javax.xml.transform.TransformerException: java.lang.RuntimeException: Namespace für Präfix "xsi" wurde nicht deklariert.

Сообщение об ошибке написано на немецком языке и означает, что пространство имен для префикса "xsi" не было объявлено. Как уже показано выше, объявление определенно присутствует в ответе.

Я пробовал другой подход с XmlSlurper, так как XmlSlurper поддерживает пространство имен. Тот же результат.

String getQuoteResponse = response.getResponseBodyContent()

def data = new XmlSlurper().parseText(getQuoteResponse)
def betrag = data.getQuoteResponse.Response.Tarifierung.Verkaufsprodukt.Produkt.Beitrag[0].Betrag.Betrag.text()
println("Betrag: " + betrag)

При вызове response.getResponseBodyContent().

выдается ошибка. Кто-нибудь сталкивался с такой же проблемой и, возможно, уже нашел решение этой проблемы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...