As a part of Postman Tutorial – End to End , in this post, we will learn how can we extract value from XML response in Postman.
Already, we learnt how can we send a XML and parameterized XML payload in Postman. In this post we will learn to extract values form XML response and assert.
Extracting or parsing XML response in Postman is little tricky. Let’s learn it.
Consider XML response as below :-
12 Amod Mahajan 1000 true 2021-01-01 2022-01-01 Lunch
First you need to convert above XML response to JSON.
var response = xml2Json(responseBody)
This “response” will be root node similar to <head> tag in html DOM. Now we need to travel node by node. For example:- To reach node “firstName”, you need to start from root node -> created-booking – > booking -> firstname. It is similar to absolute XPath.
syntax:- rootNode[“node1”][“node2”][“node3”]
// Convert xml response to json response var response = xml2Json(responseBody); // We need to travel node to node and each node will be in [] var firstName= response["created-booking"]["booking"]["firstname"] console.log("Booking ID is : " + bookingID)
Let’s write whole code for above XML response :-
pm.test("Verify booking id is not null and an integer", function() { // Convert xml response to json response var response = xml2Json(responseBody); // We need to travel node to node and each node will be in [] var bookingID = response["created-booking"]["bookingid"] pm.expect(bookingID).to.not.equal(null); // Since type of bookingID is string to converting to int first. // You can know type of variable using typeof(var) method pm.expect(parseInt(bookingID)).to.be.a("number"); }); pm.test("Verify booking is created with expected values passed in request", function() { var jsonReq = xml2Json(pm.request.body.raw); var response = xml2Json(responseBody); pm.expect(jsonReq["booking"]["firstname"]).to.eql(response["created-booking"]["booking"]["firstname"]); pm.expect(jsonReq["booking"]["lastname"]).to.eql(response["created-booking"]["booking"]["lastname"]); pm.expect(jsonReq["booking"]["totalprice"]).to.eql(response["created-booking"]["booking"]["totalprice"]); pm.expect(jsonReq["booking"]["depositpaid"]).to.eql(response["created-booking"]["booking"]["depositpaid"]); pm.expect(jsonReq["booking"]["bookingdates"]["checkin"]).to.eql(response["created-booking"]["booking"]["bookingdates"]["checkin"]); pm.expect(jsonReq["booking"]["bookingdates"]["checkout"]).to.eql(response["created-booking"]["booking"]["bookingdates"]["checkout"]); pm.expect(jsonReq["booking"]["additionalneeds"]).to.eql(response["created-booking"]["booking"]["additionalneeds"]); }) pm.test("Verify booking is created with expected values from environment file", function() { var response = xml2Json(responseBody); pm.expect(pm.environment.get("firstname")).to.eql(response["created-booking"]["booking"]["firstname"]); pm.expect(pm.environment.get("lastname")).to.eql(response["created-booking"]["booking"]["lastname"]); pm.expect(pm.environment.get("totalprice")).to.eql(response["created-booking"]["booking"]["totalprice"]); pm.expect(pm.environment.get("depositpaid")).to.eql(response["created-booking"]["booking"]["depositpaid"]); pm.expect(pm.environment.get("checkin")).to.eql(response["created-booking"]["booking"]["bookingdates"]["checkin"]); pm.expect(pm.environment.get("checkout")).to.eql(response["created-booking"]["booking"]["bookingdates"]["checkout"]); pm.expect(pm.environment.get("additionalneeds")).to.eql(response["created-booking"]["booking"]["additionalneeds"]); })
Import above example collection from here.
If you have any doubt, feel free to comment below.
If you like my posts, please like, comment, share and subscribe.
#ThanksForReading
#HappyLearning
You can find all Selenium related post here.
You can find all API manual and automation related posts here.
You can find frequently asked Java Programs here.
I am having difficulty with this- my root node I need to access contains multiple elements. How do I access one of the elements within the root node?
Special thanks to you for covering the various aspects of postman. It was great to see 53 tutorials
When we have already converted xml2json why do we need to access like [][] and not by .
Can you cover them how to save this as code repository?
Cover other methods as well