#rest-assured
#будьте уверены
Вопрос:
Я использую эту простую функцию, чтобы получить и распечатать значение в XML-ответе:
@Test void validateXMLResponse() { String book = RestAssured.given().when() .get("https://chercher.tech/sample/api/books.xml") .then().extract().path("bookstore.book.title"); System.out.println(book); }
Но я получаю эту ошибку в консоли:
java.lang.ClassCastException: class io.restassured.internal.path.xml.NodeChildrenImpl cannot be cast to class java.lang.String (io.restassured.internal.path.xml.NodeChildrenImpl is in unnamed module of loader 'app'; java.lang.String is in module java.base of loader 'bootstrap')
Ответ №1:
Поскольку у вас в xml больше, чем узел книги, вы должны использовать соответствующий индекс, чтобы определить, название какой книги вы хотите получить. Вот так: «книжный магазин.книга[0].название«. Или выполните итерацию по индексу, чтобы получить названия всех книг.
@Test public void validateXMLResponse() { String book = RestAssured.given().when() .get("https://chercher.tech/sample/api/books.xml") .then().extract().body().path("bookstore.book[0].title"); System.out.println(book); }