{"id":3284,"date":"2025-01-16T04:44:06","date_gmt":"2025-01-16T04:44:06","guid":{"rendered":"https:\/\/rahulshettyacademy.com\/blog\/index.php\/2025\/01\/16\/file-download-using-playwright-java\/"},"modified":"2025-01-16T04:44:06","modified_gmt":"2025-01-16T04:44:06","slug":"file-download-using-playwright-java","status":"publish","type":"post","link":"https:\/\/rahulshettyacademy.com\/blog\/index.php\/2025\/01\/16\/file-download-using-playwright-java\/","title":{"rendered":"File Download using Playwright Java"},"content":{"rendered":"<p><html><body><\/p>\n<section class=\"tcb-post-content tcb-shortcode thrv_wrapper\" data-css=\"tve-u-16ec5d248bb\">\n<div class=\"tve_flt tcb-style-wrap\" id=\"tve_flt\">\n<div class=\"tve_shortcode_editor tar-main-content\" data-post-id=\"3284\" id=\"tve_editor\">\n<div class=\"thrv_wrapper thrv_text_element\">\n<p><em>In this blog we will utilize playwright-java to download a file and save it at temporary as well as specific location.<\/em><em>\u00a0<\/em><\/p>\n<div class=\"code-block code-block-2\" style=\"margin: 8px auto; text-align: center; display: block; clear: both;\">\n<p><!-- horizontal responsive 2 --><br \/>\n<ins class=\"adsbygoogle\" data-ad-client=\"ca-pub-3231318496783163\" data-ad-format=\"auto\" data-ad-slot=\"2788468763\" data-full-width-responsive=\"true\" style=\"display:block\"><\/ins>\n<\/div>\n<p><strong>Topics that we will cover:<\/strong><\/p>\n<ul>\n<li>File download at default\/temporary location<\/li>\n<li>File download at specific desired location (inside playwright project)<\/li>\n<li>File download example from chromedriver storage<\/li>\n<li>Source code (default download path)<\/li>\n<li>Source code (specific download path)<\/li>\n<li>Source code (chromedriver storage)<\/li>\n<\/ul>\n<p><strong>File download at default temporary location<\/strong><\/p>\n<p>Playwright Java allows us to easily download files from a test website page.<\/p>\n<p>Go to the website<\/p>\n<p><a href=\"https:\/\/the-internet.herokuapp.com\/download\" rel=\"noopener\" target=\"_blank\">https:\/\/the-internet.herokuapp.com\/download<\/a>\u00a0<\/p>\n<p>There are many test files on this page as shown below<\/p>\n<\/div>\n<div class=\"thrv_wrapper tve_image_caption\" data-css=\"tve-u-1946d6f9fa8\" style=\"\"><span class=\"tve_image_frame\"><img alt=\"\" class=\"tve_image wp-image-3287\" data-css=\"tve-u-1946d6fbeeb\" data-height=\"275\" data-id=\"3287\" data-init-height=\"700\" data-init-width=\"886\" data-width=\"348\" decoding=\"async\" height=\"275\" loading=\"lazy\" src=\"\/blog\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-16-at-10.15.23\u202fAM.png\" style=\"aspect-ratio: auto 886 \/ 700;\" title=\"Screenshot 2025-01-16 at 10.15.23\u202fAM\" width=\"348\"\/><\/span><\/div>\n<div class=\"thrv_wrapper thrv_text_element\">\n<p>\u00a0Inspect any file, say for example \u2018json.json\u2019\u00a0<\/p>\n<\/div>\n<div class=\"thrv_wrapper tve_image_caption\" data-css=\"tve-u-1946d747c2c\" style=\"\"><span class=\"tve_image_frame\"><img alt=\"\" class=\"tve_image wp-image-3288\" data-css=\"tve-u-1946d7498d5\" data-height=\"230\" data-id=\"3288\" data-init-height=\"532\" data-init-width=\"1168\" data-width=\"505\" decoding=\"async\" height=\"230\" loading=\"lazy\" src=\"\/blog\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-16-at-10.16.14\u202fAM.png\" style=\"aspect-ratio: auto 1168 \/ 532;\" title=\"Screenshot 2025-01-16 at 10.16.14\u202fAM\" width=\"505\"\/><\/span><\/div>\n<div class=\"thrv_wrapper thrv_text_element\">\n<p>\u00a0The function &#8216;<em>waitForDownload()<\/em>&#8216; can be utilized to guarantee that playwright waits until the download is finished.\u00a0<\/p>\n<p>By calling the &#8216;waitForDownload()&#8217; function, you will receive an object of type &#8216;Download&#8217; \u00a0<\/p>\n<\/div>\n<div class=\"thrv_wrapper tve_image_caption\" data-css=\"tve-u-1946d7515dc\" style=\"\"><span class=\"tve_image_frame\"><img alt=\"\" class=\"tve_image wp-image-3289\" data-css=\"tve-u-1946d752a29\" data-height=\"172\" data-id=\"3289\" data-init-height=\"352\" data-init-width=\"1168\" data-width=\"572\" decoding=\"async\" height=\"172\" loading=\"lazy\" src=\"\/blog\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-16-at-10.21.27\u202fAM.png\" style=\"aspect-ratio: auto 1168 \/ 352;\" title=\"Screenshot 2025-01-16 at 10.21.27\u202fAM\" width=\"572\"\/><\/span><\/div>\n<div class=\"thrv_wrapper thrv_text_element\">\n<p>\u00a0The lambda function in the above code performs the \u2018click\u2019 operation to download the file\u00a0<\/p>\n<\/div>\n<div class=\"thrv_wrapper tve_image_caption\" data-css=\"tve-u-1946d75d663\" style=\"\"><span class=\"tve_image_frame\"><img alt=\"\" class=\"tve_image wp-image-3290\" data-css=\"tve-u-1946d75e6ec\" data-height=\"370\" data-id=\"3290\" data-init-height=\"822\" data-init-width=\"1168\" data-width=\"526\" decoding=\"async\" height=\"370\" loading=\"lazy\" src=\"\/blog\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-16-at-10.22.09\u202fAM.png\" style=\"aspect-ratio: auto 1168 \/ 822;\" title=\"Screenshot 2025-01-16 at 10.22.09\u202fAM\" width=\"526\"\/><\/span><\/div>\n<div class=\"thrv_wrapper thrv_text_element\">\n<p>\u00a0Execute, note below that file gets downloaded<\/p>\n<\/div>\n<div class=\"thrv_wrapper tve_image_caption\" data-css=\"tve-u-1946d7794ac\" style=\"\"><span class=\"tve_image_frame\"><img alt=\"\" class=\"tve_image wp-image-3291\" data-css=\"tve-u-1946d77b2f4\" data-height=\"209\" data-id=\"3291\" data-init-height=\"502\" data-init-width=\"1168\" data-width=\"486\" decoding=\"async\" height=\"209\" loading=\"lazy\" src=\"\/blog\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-16-at-10.24.14\u202fAM.png\" style=\"aspect-ratio: auto 1168 \/ 502;\" title=\"Screenshot 2025-01-16 at 10.24.14\u202fAM\" width=\"486\"\/><\/span><\/div>\n<div class=\"thrv_wrapper thrv_text_element\">\n<p>\u00a0Logging the URL of the downloaded file can be done as shown below<\/p>\n<\/div>\n<div class=\"thrv_wrapper tve_image_caption\" data-css=\"tve-u-1946d783633\" style=\"\"><span class=\"tve_image_frame\"><img alt=\"\" class=\"tve_image wp-image-3292\" data-css=\"tve-u-1946d784861\" data-height=\"200\" data-id=\"3292\" data-init-height=\"404\" data-init-width=\"1168\" data-width=\"578\" decoding=\"async\" height=\"200\" loading=\"lazy\" src=\"\/blog\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-16-at-10.24.56\u202fAM.png\" style=\"aspect-ratio: auto 1168 \/ 404;\" title=\"Screenshot 2025-01-16 at 10.24.56\u202fAM\" width=\"578\"\/><\/span><\/div>\n<div class=\"thrv_wrapper thrv_text_element\">\n<p>\u00a0Execute.<\/p>\n<p>The console displays the file URL, including the filename<\/p>\n<\/div>\n<div class=\"thrv_wrapper tve_image_caption\" data-css=\"tve-u-1946d78d05a\" style=\"\"><span class=\"tve_image_frame\"><img alt=\"\" class=\"tve_image wp-image-3293\" data-css=\"tve-u-1946d78e238\" data-height=\"87\" data-id=\"3293\" data-init-height=\"190\" data-init-width=\"1168\" data-width=\"533\" decoding=\"async\" height=\"87\" loading=\"lazy\" src=\"\/blog\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-16-at-10.25.33\u202fAM.png\" style=\"aspect-ratio: auto 1168 \/ 190;\" title=\"Screenshot 2025-01-16 at 10.25.33\u202fAM\" width=\"533\"\/><\/span><\/div>\n<div class=\"thrv_wrapper thrv_text_element\">\n<p>\u00a0The file gets downloaded to the default path.\u00a0<\/p>\n<p>We can make use of the \u2018path\u2019 method to find out the temporary location of the file during runtime\u00a0<\/p>\n<\/div>\n<div class=\"thrv_wrapper tve_image_caption\" data-css=\"tve-u-1946d79b704\" style=\"\"><span class=\"tve_image_frame\"><img alt=\"\" class=\"tve_image wp-image-3294\" data-css=\"tve-u-1946d79cb43\" data-height=\"174\" data-id=\"3294\" data-init-height=\"356\" data-init-width=\"1168\" data-width=\"571\" decoding=\"async\" height=\"174\" loading=\"lazy\" src=\"\/blog\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-16-at-10.26.36\u202fAM.png\" style=\"aspect-ratio: auto 1168 \/ 356;\" title=\"Screenshot 2025-01-16 at 10.26.36\u202fAM\" width=\"571\"\/><\/span><\/div>\n<div class=\"thrv_wrapper thrv_text_element\">\n<p>\u00a0Execute.<\/p>\n<p>The temporary path being displayed in the console can be observed below<\/p>\n<\/div>\n<div class=\"thrv_wrapper tve_image_caption\" data-css=\"tve-u-1946d7a3788\" style=\"\"><span class=\"tve_image_frame\"><img alt=\"\" class=\"tve_image wp-image-3295\" data-css=\"tve-u-1946d7a5057\" data-height=\"144\" data-id=\"3295\" data-init-height=\"294\" data-init-width=\"1168\" data-width=\"572\" decoding=\"async\" height=\"144\" loading=\"lazy\" src=\"\/blog\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-16-at-10.27.05\u202fAM.png\" style=\"aspect-ratio: auto 1168 \/ 294;\" title=\"Screenshot 2025-01-16 at 10.27.05\u202fAM\" width=\"572\"\/><\/span><\/div>\n<div class=\"thrv_wrapper thrv_text_element\">\n<p>\u00a0<strong>File download at specific desired location (inside playwright project)<\/strong><\/p>\n<p>\u2018<em>saveAs<\/em>\u2019 method can be used to download a file at specific location inside playwright project\u00a0<\/p>\n<\/div>\n<div class=\"thrv_wrapper tve_image_caption\" data-css=\"tve-u-1946d7af47a\" style=\"\"><span class=\"tve_image_frame\"><img alt=\"\" class=\"tve_image wp-image-3296\" data-css=\"tve-u-1946d7b0cc5\" data-height=\"151\" data-id=\"3296\" data-init-height=\"316\" data-init-width=\"1168\" data-width=\"558\" decoding=\"async\" height=\"151\" loading=\"lazy\" src=\"\/blog\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-16-at-10.27.55\u202fAM.png\" style=\"aspect-ratio: auto 1168 \/ 316;\" title=\"Screenshot 2025-01-16 at 10.27.55\u202fAM\" width=\"558\"\/><\/span><\/div>\n<div class=\"thrv_wrapper thrv_text_element\">\n<p>\u00a0Execute and refresh project.\u00a0<\/p>\n<p>The zip file is downloaded inside project<\/p>\n<\/div>\n<div class=\"thrv_wrapper tve_image_caption\" data-css=\"tve-u-1946d7c5277\" style=\"\"><span class=\"tve_image_frame\"><img alt=\"\" class=\"tve_image wp-image-3297\" data-css=\"tve-u-1946d7c6599\" data-height=\"316\" data-id=\"3297\" data-init-height=\"676\" data-init-width=\"1168\" data-width=\"546\" decoding=\"async\" height=\"316\" loading=\"lazy\" src=\"\/blog\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-16-at-10.29.22\u202fAM.png\" style=\"aspect-ratio: auto 1168 \/ 676;\" title=\"Screenshot 2025-01-16 at 10.29.22\u202fAM\" width=\"546\"\/><\/span><\/div>\n<div class=\"thrv_wrapper thrv_text_element\">\n<p>\u00a0To download it inside <em>src\/test\/resources\/files\/<\/em> folder, simply change the path as shown below<\/p>\n<\/div>\n<div class=\"thrv_wrapper tve_image_caption\" data-css=\"tve-u-1946d7ce111\" style=\"\"><span class=\"tve_image_frame\"><img alt=\"\" class=\"tve_image wp-image-3298\" data-css=\"tve-u-1946d7cf704\" data-height=\"360\" data-id=\"3298\" data-init-height=\"768\" data-init-width=\"1168\" data-width=\"547\" decoding=\"async\" height=\"360\" loading=\"lazy\" src=\"\/blog\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-16-at-10.29.58\u202fAM.png\" style=\"aspect-ratio: auto 1168 \/ 768;\" title=\"Screenshot 2025-01-16 at 10.29.58\u202fAM\" width=\"547\"\/><\/span><\/div>\n<div class=\"thrv_wrapper thrv_text_element\">\n<p>\u00a0<strong>File download example from chromedriver storage<\/strong><\/p>\n<p>Go to<\/p>\n<p><a class=\"\" href=\"https:\/\/chromedriver.storage.googleapis.com\/index.html?path=102.0.5005.27\/\" rel=\"noopener\" style=\"outline: none;\" target=\"_blank\">https:\/\/chromedriver.storage.googleapis.com\/index.html?path=102.0.5005.27\/<\/a>\u00a0<\/p>\n<p>Let us try to download the highlighted zip file<\/p>\n<\/div>\n<div class=\"thrv_wrapper tve_image_caption\" data-css=\"tve-u-1946d7d8019\" style=\"\"><span class=\"tve_image_frame\"><img alt=\"\" class=\"tve_image wp-image-3299\" data-css=\"tve-u-1946d7d96a6\" data-height=\"385\" data-id=\"3299\" data-init-height=\"996\" data-init-width=\"1168\" data-width=\"451\" decoding=\"async\" height=\"385\" loading=\"lazy\" src=\"\/blog\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-16-at-10.30.38\u202fAM.png\" style=\"aspect-ratio: auto 1168 \/ 996;\" title=\"Screenshot 2025-01-16 at 10.30.38\u202fAM\" width=\"451\"\/><\/span><\/div>\n<div class=\"thrv_wrapper thrv_text_element\">\n<p>\u00a0Execute the code, notice that the file gets downloaded<\/p>\n<\/div>\n<div class=\"thrv_wrapper tve_image_caption\" data-css=\"tve-u-1946d7e4f17\" style=\"\"><span class=\"tve_image_frame\"><img alt=\"\" class=\"tve_image wp-image-3300\" data-css=\"tve-u-1946d7e7258\" data-height=\"297\" data-id=\"3300\" data-init-height=\"684\" data-init-width=\"1168\" data-width=\"508\" decoding=\"async\" height=\"297\" loading=\"lazy\" src=\"\/blog\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-16-at-10.31.30\u202fAM.png\" style=\"aspect-ratio: auto 1168 \/ 684;\" title=\"Screenshot 2025-01-16 at 10.31.30\u202fAM\" width=\"508\"\/><\/span><\/div>\n<div class=\"thrv_wrapper thrv_text_element\">\n<p>\u00a0So this is how we can download the files using playwright.<\/p>\n<p><strong>Source code (default download path)<\/strong><\/p>\n<p><strong>package<\/strong> com.rsa.playwrightjava;<\/p>\n<p><\/p>\n<p><strong>import<\/strong> org.junit.jupiter.api.Test;<\/p>\n<p><strong>import<\/strong> com.microsoft.playwright.Browser;<\/p>\n<p><strong>import<\/strong> com.microsoft.playwright.BrowserType;<\/p>\n<p><strong>import<\/strong> com.microsoft.playwright.BrowserType.LaunchOptions;<\/p>\n<p><strong>import<\/strong> com.microsoft.playwright.Download;<\/p>\n<p><strong>import<\/strong> com.microsoft.playwright.Page;<\/p>\n<p><strong>import<\/strong> com.microsoft.playwright.Playwright;<\/p>\n<p><\/p>\n<p><strong>public<\/strong><br \/>\n<strong>class<\/strong> Blog16_DownloadFileTempPath {<\/p>\n<p>@Test<\/p>\n<p><strong>public<\/strong><br \/>\n<strong>void<\/strong> PlaywrightJTest() <strong>throws<\/strong> InterruptedException {<\/p>\n<p>Playwright pt = Playwright.<em>create<\/em>();<\/p>\n<p>LaunchOptions lo = <strong>new<\/strong> LaunchOptions();<\/p>\n<p>lo.setChannel(&#8220;msedge&#8221;);<\/p>\n<p>lo.setHeadless(<strong>false<\/strong>);<\/p>\n<p>BrowserType btype = pt.chromium();<\/p>\n<p>Browser b = btype.launch((<strong>new<\/strong> BrowserType.LaunchOptions().setHeadless(<strong>false<\/strong>)));<\/p>\n<p>Page pg = b.newPage();<\/p>\n<p>pg.navigate(&#8220;https:\/\/the-internet.herokuapp.com\/download&#8221;);<\/p>\n<p>Download dl = pg.waitForDownload(() -&gt; {<\/p>\n<p>pg.click(&#8220;text=json.json&#8221;);<\/p>\n<p>});<\/p>\n<p>System.<strong><em>out<\/em><\/strong>.println(&#8220;The file url is&#8211;&gt;&#8221; + dl.url());<\/p>\n<p>System.<strong><em>out<\/em><\/strong>.println(&#8220;Temporary\/default file path&#8211;&gt;&#8221; + dl.path().toString());<\/p>\n<p>pg.pause();<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p><strong>Source code (specific download path)<\/strong><\/p>\n<p><strong>package<\/strong> com.rsa.playwrightjava;<\/p>\n<p><\/p>\n<p><strong>import<\/strong> java.nio.file.Paths;<\/p>\n<p><strong>import<\/strong> org.junit.jupiter.api.Test;<\/p>\n<p><strong>import<\/strong> com.microsoft.playwright.Browser;<\/p>\n<p><strong>import<\/strong> com.microsoft.playwright.BrowserType;<\/p>\n<p><strong>import<\/strong> com.microsoft.playwright.BrowserType.LaunchOptions;<\/p>\n<p><strong>import<\/strong> com.microsoft.playwright.Download;<\/p>\n<p><strong>import<\/strong> com.microsoft.playwright.Page;<\/p>\n<p><strong>import<\/strong> com.microsoft.playwright.Playwright;<\/p>\n<p><\/p>\n<p><strong>public<\/strong><br \/>\n<strong>class<\/strong> Blog16_DownloadFilePlaywrightProject {<\/p>\n<p>@Test<\/p>\n<p><strong>public<\/strong><br \/>\n<strong>void<\/strong> PlaywrightJTest() <strong>throws<\/strong> InterruptedException {<\/p>\n<p>Playwright pt = Playwright.<em>create<\/em>();<\/p>\n<p>LaunchOptions lo = <strong>new<\/strong> LaunchOptions();<\/p>\n<p>lo.setChannel(&#8220;msedge&#8221;);<\/p>\n<p>lo.setHeadless(<strong>false<\/strong>);<\/p>\n<p>BrowserType btype = pt.chromium();<\/p>\n<p>Browser b = btype.launch((<strong>new<\/strong> BrowserType.LaunchOptions().setHeadless(<strong>false<\/strong>)));<\/p>\n<p>Page pg = b.newPage();<\/p>\n<p>pg.navigate(&#8220;https:\/\/the-internet.herokuapp.com\/download&#8221;);<\/p>\n<p>Download dl = pg.waitForDownload(() -&gt; {<\/p>\n<p>pg.click(&#8220;text=json.json&#8221;);<\/p>\n<p>});<\/p>\n<p>\/\/dl.saveAs(Paths.get(&#8220;playwrightfiledummy.zip&#8221;));<\/p>\n<p>dl.saveAs(Paths.<em>get<\/em>(&#8220;.\/src\/test\/resources\/files\/playwrightfiledummy.zip&#8221;));<\/p>\n<p>pg.pause();<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p><strong><br \/>Source code (chromedriver storage)<\/strong><\/p>\n<p><strong>package<\/strong> com.rsa.playwrightjava;<\/p>\n<p><\/p>\n<p><strong>import<\/strong> java.nio.file.Paths;<\/p>\n<p><strong>import<\/strong> org.junit.jupiter.api.Test;<\/p>\n<p><strong>import<\/strong> com.microsoft.playwright.Browser;<\/p>\n<p><strong>import<\/strong> com.microsoft.playwright.BrowserType;<\/p>\n<p><strong>import<\/strong> com.microsoft.playwright.BrowserType.LaunchOptions;<\/p>\n<p><strong>import<\/strong> com.microsoft.playwright.Download;<\/p>\n<p><strong>import<\/strong> com.microsoft.playwright.Page;<\/p>\n<p><strong>import<\/strong> com.microsoft.playwright.Playwright;<\/p>\n<p><\/p>\n<p><strong>public<\/strong><br \/>\n<strong>class<\/strong> Blog16_FileDownloadChromeStorage {<\/p>\n<p>@Test<\/p>\n<p><strong>public<\/strong><br \/>\n<strong>void<\/strong> PlaywrightJTest() <strong>throws<\/strong> InterruptedException {<\/p>\n<p>Playwright pt = Playwright.<em>create<\/em>();<\/p>\n<p>LaunchOptions lo = <strong>new<\/strong> LaunchOptions();<\/p>\n<p>lo.setChannel(&#8220;msedge&#8221;);<\/p>\n<p>lo.setHeadless(<strong>false<\/strong>);<\/p>\n<p>BrowserType btype = pt.chromium();<\/p>\n<p>Browser b = btype.launch((<strong>new<\/strong> BrowserType.LaunchOptions().setHeadless(<strong>false<\/strong>)));<\/p>\n<p>Page pg = b.newPage();<\/p>\n<p>pg.navigate(&#8220;https:\/\/chromedriver.storage.googleapis.com\/index.html?path=102.0.5005.27\/&#8221;);<\/p>\n<p>Download dl = pg.waitForDownload(() -&gt; {<\/p>\n<p>pg.click(&#8220;text=chromedriver_win32.zip&#8221;);<\/p>\n<p>});<\/p>\n<p>dl.saveAs(Paths.<em>get<\/em>(&#8220;.\/src\/test\/resources\/files\/chromedriver_win32.zip&#8221;));<\/p>\n<p>System.<strong><em>out<\/em><\/strong>.println(dl.suggestedFilename());<\/p>\n<p>pg.pause();<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p><\/p>\n<p>Thanks.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"tcb_flag\" style=\"display: none\"><\/div>\n<\/section>\n<p><\/body><\/html><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this blog we will utilize playwright-java to download a file and save it at temporary as well as specific location.\u00a0 Topics that we will cover: File download at default\/temporary location File download at specific desired location (inside playwright project) File download example from chromedriver storage Source code (default download path) Source code (specific download [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,9],"tags":[],"class_list":["post-3284","post","type-post","status-publish","format-standard","hentry","category-java","category-playwright","post-wrapper","thrv_wrapper"],"_links":{"self":[{"href":"https:\/\/rahulshettyacademy.com\/blog\/index.php\/wp-json\/wp\/v2\/posts\/3284","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rahulshettyacademy.com\/blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rahulshettyacademy.com\/blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rahulshettyacademy.com\/blog\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rahulshettyacademy.com\/blog\/index.php\/wp-json\/wp\/v2\/comments?post=3284"}],"version-history":[{"count":0,"href":"https:\/\/rahulshettyacademy.com\/blog\/index.php\/wp-json\/wp\/v2\/posts\/3284\/revisions"}],"wp:attachment":[{"href":"https:\/\/rahulshettyacademy.com\/blog\/index.php\/wp-json\/wp\/v2\/media?parent=3284"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rahulshettyacademy.com\/blog\/index.php\/wp-json\/wp\/v2\/categories?post=3284"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rahulshettyacademy.com\/blog\/index.php\/wp-json\/wp\/v2\/tags?post=3284"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}