{"id":91667,"date":"2017-08-01T13:44:40","date_gmt":"2017-08-01T13:44:40","guid":{"rendered":"https:\/\/webkul.com\/blog\/?p=91667"},"modified":"2021-07-16T12:02:03","modified_gmt":"2021-07-16T12:02:03","slug":"assertion-in-selenium-webdriver","status":"publish","type":"post","link":"https:\/\/webkul.com\/blog\/assertion-in-selenium-webdriver\/","title":{"rendered":"Assertion in selenium WebDriver using TestNg"},"content":{"rendered":"\n<p>A Selenese tells Selenium what to do. Selenium commands (Selenese) are of three types : Actions, Accessors, and Assertions.<br><strong>Actions<\/strong> generally manipulate the state of the application like \u201cclick this link\u201d and \u201cselect that option\u201d. If an Action fails, or has an error, the execution of the current test is stops.<br><strong>Accessors<\/strong> examine the state of the application and store the results in variables, e.g. \u201cTitle\u201d.<br><strong>Assertions<\/strong> verify that the state of the application is same to what we are expecting. Selenium Assertions can be of three types: \u201cassert\u201d, \u201cverify\u201d, and \u201d waitFor\u201d. When an \u201cassert\u201d fails, the test is aborted. When a \u201cverify\u201d fails, the test will continue execution, logging the failure.<br>A \u201cwaitFor\u201d command waits for some condition to become true. They will fail and halt the test if the condition does not become true within the current timeout setting. Perhaps, they will succeed immediately if the condition is already true.<br>When, we talk about the assertions used in WebDriver using&nbsp;<strong><a href=\"http:\/\/testng.org\/doc\/\">TestNg<\/a><\/strong> framework, we have two types of assertions; <strong>hard assertion and soft assertion<\/strong>.&nbsp;Lets see about them briefly:<\/p>\n\n\n\n<div class=\"wk-index-wrap\"><h3 class=\"index-title\">Hard Assertion in Webdriver using TestNg<\/h3><\/div><div class=\"margin-bottom-50\">\n<p>A hard assert throw AssertException immediately after a test fails and the test is marked as failed. Perhaps test suite continues with next @Test annotation. A hard assertion can be of following types:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>assertEquals<\/li><li>assertNotEquals<\/li><li>assertTrue<\/li><li>assertFalse<\/li><li>assertNull<\/li><li>assertNotNull<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">assertEquals with TestNg<\/h2>\n\n\n\n<p>This is used to compare expected and actual values in selenium webdriver. Whenever the expected and actual values are same, the assertion passes with no exception. But, if the actual and expected values are not just same, the assert fails with an exception and the test is marked as &#8220;failed&#8221;. The suite continues to run with the next @Test annotation(if any).<br><strong>Assert.assertEquals(actual,expected);<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">assertNotEquals<\/h2>\n\n\n\n<p>assertNotEquals is just opposite to the functioning of assertEquals assertion.&nbsp;Whenever the expected and actual values matches, the assertion fails with an exception and marks the test-case as &#8220;failed&#8221;. The particular testcase is aborted and execution continuous with the next @Test annotation.<br><strong>Assert.assertNotEquals(actual,expected,Message);<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">assertTrue<\/h2>\n\n\n\n<p>When we are dealing with Boolean&nbsp;conditions, we should use assertTrue. This assertion returns true if the applied condition passes. If the condition is false\/fails, this assertion skips the current method from execution.<br><strong>Assert.assertTrue(condition);<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">assertFalse<\/h2>\n\n\n\n<p>Assert.assertFalse checks the Boolean value&nbsp;returned by a condition is false or not. When a condition value is true, the assertion aborts the method by an exception. This is basically opposite to assertTrue. The syntax is given below:<strong><br>Assert.assertFalse(condition);<br><\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">assertNull<\/h2>\n\n\n\n<p>This assertion checks for a object, if it is null or not. When an object is &#8216;null&#8217; the assertion returns an exception resulting in aborting the test.&nbsp;The syntax is as follows:<strong><br>Assert.assertNull(object);<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">assertNotNull<\/h2>\n\n\n\n<p>Assert.assertNotNull is vice-versa of assertNull. When a object has some value, the assertion aborts the method with an exception. The syntax is given below:<strong><br>Assert.assertNotNull(object);<br><\/strong><br>Now, let&#8217;s see a simple program which gives a brief idea to use assertion in selenium script.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted brush:java\">package HardAssert;\nimport org.testng.Assert;\nimport org.testng.annotations.Test;\npublic class HardAssertion {\n    @Test\n    public void assertEquals(){\n    \tAssert.assertEquals(\"This assertion will pass\",\"This assertion will pass\");\n    \tSystem.out.println(\"This line is executed because assertEquals \"\n    \t\t\t+ \"passed since both the strings are same\");\n    \tAssert.assertEquals(\"assertion\",\"This assertion will fail\");\n    \tSystem.out.println(\"This line will not be executed because \"\n    \t\t\t+ \"assertEquals fails both the strings are different.\"\n    \t\t\t+ \"Also the test\/method will be declared failed\");\n    }\n    @Test\n    public void assertNotEquals(){\n    \tAssert.assertNotEquals(\"This assertion will pass\",\"Since the \"\n    \t\t\t+ \"expected and actual result do not match\");\n    \tSystem.out.println(\"This line is executed because assertNotEquals\"\n    \t\t\t+ \" assertion pass for the given situation\");\n    }\n    @Test\n    public void assertTrue(){\n    \tAssert.assertTrue(3&lt;5);\n    \tSystem.out.println(\"This line will be executed as assertTrue will\"\n    \t\t\t+ \" pass because the 3&lt;5(which will return true)\");\n    }\n    @Test\n    public void assertFalse(){\n    \tAssert.assertFalse(3&gt;5);\n    \tSystem.out.println(\"This line is executed because assertFalse\"\n    \t\t\t+ \"assertion passes as the given condition will return false\");\n    }\n    @Test\n    public void assertNull(){\n    \tAssert.assertNull(null);\n    \tSystem.out.println(\"Since we we set null in the condition, the assertion \"\n    \t\t\t+ \"assertNull will pass\");\n    }\n    @Test\n    public void assertNotNull(){\n    \tAssert.assertNotNull(\"This assertion will pass because this \"\n    \t\t\t+ \"string don't returns a null value\");\n    \tSystem.out.println(\"This line is executed because assertNotNull have have passed\");\n    }\n}<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted brush:java\">&nbsp;<\/pre>\n<\/div>\n\n\n\n<div class=\"wk-index-wrap\"><h3 class=\"index-title\">Soft Assertion In WebDriver Using TestNg<\/h3><\/div><div class=\"margin-bottom-50\">\n<p>Till now, we have learnt about the hard assertions in WebDriver using testNg framework. In a hard assertion, when the assertion fails it terminates\/aborts the test(method). But, what if we want to run the entire program? What if, we want to report fail test in testNg report but do not want to terminate the script at any case? It is not really possible if we use hard assertions. So, to overcome this drawback of hard assertion we can use soft assertions in testNg.<br>To use a soft assertion in testNg, we have to include it&#8217;s corresponding class (as SoftAssert()) in the script. This class prevents the execution to throw any exception (of assertion). Also, the most important context is, now the failed assertions will be reported in the testNg report and not making the test to abort anywhere.<br>Let&#8217;s see an example of soft assertion in testNg. Also, try to look at the difference between the two assertion and which assert should be used when.\n<\/p>\n\n\n\n<pre class=\"wp-block-preformatted brush:java\">package hardAndSoftAssertion;\nimport org.testng.Assert;\nimport org.testng.annotations.Test;\nimport org.testng.asserts.SoftAssert;\npublic class HardAssertion {\n\tSoftAssert softAssert = new SoftAssert();\n    @Test\n    public void hardAssertion(){\n    \tAssert.assertEquals(\"pass\",\"pass\");\n    \tSystem.out.println(\"This line is executed because assertEquals \"\n    \t\t\t+ \"passed as both the strings are same\");\n    \tAssert.assertNull(\"assertion\");\n    \tSystem.out.println(\"Since the object under assertion\"\n    \t\t\t+ \" is not null, the assertion will fail. \"\n    \t\t\t+ \"This line will not be executed\");\n    }\n    @Test\n    public void softAssertion(){\n    \t\n    \tsoftAssert.assertNull(\"assertion\");\n    \tSystem.out.println(\"We are using Soft assertion in this method,\"\n    \t\t\t+ \" so this line of code will also be executed even if \"\n    \t\t\t+ \"the assetion fails.Wherever we want to execute full \"\n    \t\t\t+ \"testcase\/method, we should use SoftAssertion\");\n    \tsoftAssert.assertAll();\n    }\n    \n}<\/pre>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>A Selenese tells Selenium what to do. Selenium commands (Selenese) are of three types : Actions, Accessors, and Assertions.Actions generally manipulate the state of the application like \u201cclick this link\u201d and \u201cselect that option\u201d. If an Action fails, or has an error, the execution of the current test is stops.Accessors examine the state of the <a href=\"https:\/\/webkul.com\/blog\/assertion-in-selenium-webdriver\/\">[&#8230;]<\/a><\/p>\n","protected":false},"author":94,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4312,3137,4932],"tags":[5219,5221,5220],"class_list":["post-91667","post","type-post","status-publish","format-standard","hentry","category-automation-testing","category-testing","category-web-testing","tag-assertion-in-testng","tag-hard-and-soft-assertion-in-testng","tag-selenium-assertion"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Assertion in selenium WebDriver using TestNg - Webkul Blog<\/title>\n<meta name=\"description\" content=\"A Selenese tells Selenium what to do. Selenium commands (or selenese) are of three types : Actions, Accessors and Assertions.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/webkul.com\/blog\/assertion-in-selenium-webdriver\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Assertion in selenium WebDriver using TestNg - Webkul Blog\" \/>\n<meta property=\"og:description\" content=\"A Selenese tells Selenium what to do. Selenium commands (or selenese) are of three types : Actions, Accessors and Assertions.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/webkul.com\/blog\/assertion-in-selenium-webdriver\/\" \/>\n<meta property=\"og:site_name\" content=\"Webkul Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/webkul\/\" \/>\n<meta property=\"article:published_time\" content=\"2017-08-01T13:44:40+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-07-16T12:02:03+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-og.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Himanshu Chand\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@webkul\" \/>\n<meta name=\"twitter:site\" content=\"@webkul\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Himanshu Chand\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/webkul.com\/blog\/assertion-in-selenium-webdriver\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/webkul.com\/blog\/assertion-in-selenium-webdriver\/\"},\"author\":{\"name\":\"Himanshu Chand\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/person\/08d4d0b31f228925099740afd668b50f\"},\"headline\":\"Assertion in selenium WebDriver using TestNg\",\"datePublished\":\"2017-08-01T13:44:40+00:00\",\"dateModified\":\"2021-07-16T12:02:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/webkul.com\/blog\/assertion-in-selenium-webdriver\/\"},\"wordCount\":690,\"commentCount\":5,\"publisher\":{\"@id\":\"https:\/\/webkul.com\/blog\/#organization\"},\"keywords\":[\"Assertion in testNg\",\"Hard And soft assertion in TestNg\",\"selenium assertion\"],\"articleSection\":[\"Automation testing\",\"Testing\",\"Web testing\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/webkul.com\/blog\/assertion-in-selenium-webdriver\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/webkul.com\/blog\/assertion-in-selenium-webdriver\/\",\"url\":\"https:\/\/webkul.com\/blog\/assertion-in-selenium-webdriver\/\",\"name\":\"Assertion in selenium WebDriver using TestNg - Webkul Blog\",\"isPartOf\":{\"@id\":\"https:\/\/webkul.com\/blog\/#website\"},\"datePublished\":\"2017-08-01T13:44:40+00:00\",\"dateModified\":\"2021-07-16T12:02:03+00:00\",\"description\":\"A Selenese tells Selenium what to do. Selenium commands (or selenese) are of three types : Actions, Accessors and Assertions.\",\"breadcrumb\":{\"@id\":\"https:\/\/webkul.com\/blog\/assertion-in-selenium-webdriver\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/webkul.com\/blog\/assertion-in-selenium-webdriver\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/webkul.com\/blog\/assertion-in-selenium-webdriver\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/webkul.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Assertion in selenium WebDriver using TestNg\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/webkul.com\/blog\/#website\",\"url\":\"https:\/\/webkul.com\/blog\/\",\"name\":\"Webkul Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/webkul.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/webkul.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/webkul.com\/blog\/#organization\",\"name\":\"WebKul Software Private Limited\",\"url\":\"https:\/\/webkul.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png\",\"contentUrl\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png\",\"width\":380,\"height\":380,\"caption\":\"WebKul Software Private Limited\"},\"image\":{\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/webkul\/\",\"https:\/\/x.com\/webkul\",\"https:\/\/www.instagram.com\/webkul\/\",\"https:\/\/www.linkedin.com\/company\/webkul\",\"https:\/\/www.youtube.com\/user\/webkul\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/person\/08d4d0b31f228925099740afd668b50f\",\"name\":\"Himanshu Chand\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/067d10770fdcc86d177164f68eb74b9528397b3a5fbf01970b6f6dfd48c64281?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/067d10770fdcc86d177164f68eb74b9528397b3a5fbf01970b6f6dfd48c64281?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g\",\"caption\":\"Himanshu Chand\"},\"url\":\"https:\/\/webkul.com\/blog\/author\/himanshu-chand168\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Assertion in selenium WebDriver using TestNg - Webkul Blog","description":"A Selenese tells Selenium what to do. Selenium commands (or selenese) are of three types : Actions, Accessors and Assertions.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/webkul.com\/blog\/assertion-in-selenium-webdriver\/","og_locale":"en_US","og_type":"article","og_title":"Assertion in selenium WebDriver using TestNg - Webkul Blog","og_description":"A Selenese tells Selenium what to do. Selenium commands (or selenese) are of three types : Actions, Accessors and Assertions.","og_url":"https:\/\/webkul.com\/blog\/assertion-in-selenium-webdriver\/","og_site_name":"Webkul Blog","article_publisher":"https:\/\/www.facebook.com\/webkul\/","article_published_time":"2017-08-01T13:44:40+00:00","article_modified_time":"2021-07-16T12:02:03+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-og.png","type":"image\/png"}],"author":"Himanshu Chand","twitter_card":"summary_large_image","twitter_creator":"@webkul","twitter_site":"@webkul","twitter_misc":{"Written by":"Himanshu Chand","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/webkul.com\/blog\/assertion-in-selenium-webdriver\/#article","isPartOf":{"@id":"https:\/\/webkul.com\/blog\/assertion-in-selenium-webdriver\/"},"author":{"name":"Himanshu Chand","@id":"https:\/\/webkul.com\/blog\/#\/schema\/person\/08d4d0b31f228925099740afd668b50f"},"headline":"Assertion in selenium WebDriver using TestNg","datePublished":"2017-08-01T13:44:40+00:00","dateModified":"2021-07-16T12:02:03+00:00","mainEntityOfPage":{"@id":"https:\/\/webkul.com\/blog\/assertion-in-selenium-webdriver\/"},"wordCount":690,"commentCount":5,"publisher":{"@id":"https:\/\/webkul.com\/blog\/#organization"},"keywords":["Assertion in testNg","Hard And soft assertion in TestNg","selenium assertion"],"articleSection":["Automation testing","Testing","Web testing"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/webkul.com\/blog\/assertion-in-selenium-webdriver\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/webkul.com\/blog\/assertion-in-selenium-webdriver\/","url":"https:\/\/webkul.com\/blog\/assertion-in-selenium-webdriver\/","name":"Assertion in selenium WebDriver using TestNg - Webkul Blog","isPartOf":{"@id":"https:\/\/webkul.com\/blog\/#website"},"datePublished":"2017-08-01T13:44:40+00:00","dateModified":"2021-07-16T12:02:03+00:00","description":"A Selenese tells Selenium what to do. Selenium commands (or selenese) are of three types : Actions, Accessors and Assertions.","breadcrumb":{"@id":"https:\/\/webkul.com\/blog\/assertion-in-selenium-webdriver\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/webkul.com\/blog\/assertion-in-selenium-webdriver\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/webkul.com\/blog\/assertion-in-selenium-webdriver\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/webkul.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Assertion in selenium WebDriver using TestNg"}]},{"@type":"WebSite","@id":"https:\/\/webkul.com\/blog\/#website","url":"https:\/\/webkul.com\/blog\/","name":"Webkul Blog","description":"","publisher":{"@id":"https:\/\/webkul.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/webkul.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/webkul.com\/blog\/#organization","name":"WebKul Software Private Limited","url":"https:\/\/webkul.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png","contentUrl":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png","width":380,"height":380,"caption":"WebKul Software Private Limited"},"image":{"@id":"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/webkul\/","https:\/\/x.com\/webkul","https:\/\/www.instagram.com\/webkul\/","https:\/\/www.linkedin.com\/company\/webkul","https:\/\/www.youtube.com\/user\/webkul\/"]},{"@type":"Person","@id":"https:\/\/webkul.com\/blog\/#\/schema\/person\/08d4d0b31f228925099740afd668b50f","name":"Himanshu Chand","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webkul.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/067d10770fdcc86d177164f68eb74b9528397b3a5fbf01970b6f6dfd48c64281?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/067d10770fdcc86d177164f68eb74b9528397b3a5fbf01970b6f6dfd48c64281?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g","caption":"Himanshu Chand"},"url":"https:\/\/webkul.com\/blog\/author\/himanshu-chand168\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/91667","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/users\/94"}],"replies":[{"embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/comments?post=91667"}],"version-history":[{"count":47,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/91667\/revisions"}],"predecessor-version":[{"id":296500,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/91667\/revisions\/296500"}],"wp:attachment":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/media?parent=91667"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/categories?post=91667"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/tags?post=91667"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}