{"id":3587,"date":"2025-01-17T08:55:36","date_gmt":"2025-01-17T08:55:36","guid":{"rendered":"https:\/\/rahulshettyacademy.com\/blog\/index.php\/2025\/01\/17\/handle-calendars-and-date-picks-using-playwright-java\/"},"modified":"2025-01-17T08:55:36","modified_gmt":"2025-01-17T08:55:36","slug":"handle-calendars-and-date-picks-using-playwright-java","status":"publish","type":"post","link":"https:\/\/rahulshettyacademy.com\/blog\/index.php\/2025\/01\/17\/handle-calendars-and-date-picks-using-playwright-java\/","title":{"rendered":"Handle Calendars and Date picks 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=\"3587\" id=\"tve_editor\">\n<div class=\"thrv_wrapper thrv_text_element\">\n<p><em>In this blog we will be utilizing Playwright Java to handle calendars and date picks.<\/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>Select date\/month\/year on a given website<\/li>\n<li>Source code<\/li>\n<\/ul>\n<p><strong>Select date\/month\/year on a given website<\/strong><\/p>\n<p>Go to<\/p>\n<p>https:\/\/rahulshettyacademy.com\/seleniumPractise\/#\/offers\u00a0<\/p>\n<\/div>\n<div class=\"thrv_wrapper tve_image_caption\" data-css=\"tve-u-194737b40f8\" style=\"\"><span class=\"tve_image_frame\"><img alt=\"\" class=\"tve_image wp-image-3590\" data-css=\"tve-u-194737b6239\" data-height=\"259\" data-id=\"3590\" data-init-height=\"612\" data-init-width=\"1170\" data-width=\"496\" decoding=\"async\" height=\"259\" loading=\"lazy\" src=\"\/blog\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-17-at-2.26.51\u202fPM.png\" style=\"aspect-ratio: auto 1170 \/ 612;\" title=\"Screenshot 2025-01-17 at 2.26.51\u202fPM\" width=\"496\"\/><\/span><\/div>\n<div class=\"thrv_wrapper thrv_text_element\">\n<p>Our goal is to automate the selection of \u2018Delivery Date\u2019 calendar that is shown above.<\/p>\n<p>We will first click the delivery date field, let us inspect delivery date field. Right click on the date\u00a0<\/p>\n<\/div>\n<div class=\"thrv_wrapper tve_image_caption\" data-css=\"tve-u-194737c19e8\" style=\"\"><span class=\"tve_image_frame\"><img alt=\"\" class=\"tve_image wp-image-3591 tcb-moved-image\" data-css=\"tve-u-194737c3efb\" data-height=\"629\" data-id=\"3591\" data-init-height=\"1392\" data-init-width=\"1170\" data-width=\"529\" decoding=\"async\" height=\"629\" loading=\"lazy\" src=\"\/blog\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-17-at-2.27.41\u202fPM.png\" style=\"aspect-ratio: auto 1170 \/ 1392;\" title=\"Screenshot 2025-01-17 at 2.27.41\u202fPM\" width=\"529\"\/><\/span><\/div>\n<div class=\"thrv_wrapper thrv_text_element\">\n<p><em>#root &gt; div &gt; div.date-field-container &gt; div &gt; div &gt; div &gt; input<\/em><strong><em>.react-date-picker__inputGroup<\/em><\/strong><em>__input.react-date-picker__inputGroup__day<\/em><\/p>\n<\/div>\n<div class=\"thrv_wrapper tve_image_caption\" data-css=\"tve-u-194737d069b\" style=\"\"><span class=\"tve_image_frame\"><img alt=\"\" class=\"tve_image wp-image-3592\" data-css=\"tve-u-194737d1827\" data-height=\"820\" data-id=\"3592\" data-init-height=\"1660\" data-init-width=\"1170\" data-width=\"578\" decoding=\"async\" height=\"820\" loading=\"lazy\" src=\"\/blog\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-17-at-2.28.51\u202fPM.png\" style=\"aspect-ratio: auto 1170 \/ 1660;\" title=\"Screenshot 2025-01-17 at 2.28.51\u202fPM\" width=\"578\"\/><\/span><\/div>\n<div class=\"thrv_wrapper thrv_text_element\">\n<p>\u00a0Copy css selector<\/p>\n<p><em>#root &gt; div &gt; div.date-field-container &gt; div &gt; span &gt; div &gt; div &gt; div.react-calendar__navigation &gt; button<\/em><strong><em>.react-calendar__navigation__label<\/em><\/strong><\/p>\n<p>We can pick the above class<\/p>\n<\/div>\n<div class=\"thrv_wrapper tve_image_caption\" data-css=\"tve-u-1947386be8e\" style=\"\"><span class=\"tve_image_frame\"><img alt=\"\" class=\"tve_image wp-image-3593\" data-css=\"tve-u-1947386cee2\" data-height=\"609\" data-id=\"3593\" data-init-height=\"1210\" data-init-width=\"1170\" data-width=\"589\" decoding=\"async\" height=\"609\" loading=\"lazy\" src=\"\/blog\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-17-at-2.39.30\u202fPM.png\" style=\"aspect-ratio: auto 1170 \/ 1210;\" title=\"Screenshot 2025-01-17 at 2.39.30\u202fPM\" width=\"589\"\/><\/span><\/div>\n<div class=\"thrv_wrapper thrv_text_element\">\n<p>We will now inspect the year label<\/p>\n<\/div>\n<div class=\"thrv_wrapper tve_image_caption\" data-css=\"tve-u-19473876050\" style=\"\"><span class=\"tve_image_frame\"><img alt=\"\" class=\"tve_image wp-image-3594\" data-css=\"tve-u-194738776a4\" data-height=\"520\" data-id=\"3594\" data-init-height=\"1352\" data-init-width=\"1208\" data-width=\"465\" decoding=\"async\" height=\"520\" loading=\"lazy\" src=\"\/blog\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-17-at-2.40.03\u202fPM.png\" style=\"aspect-ratio: auto 1208 \/ 1352;\" title=\"Screenshot 2025-01-17 at 2.40.03\u202fPM\" width=\"465\"\/><\/span><\/div>\n<div class=\"thrv_wrapper thrv_text_element\">\n<p>Once we click the year label (using above), lot of years would be shown, see below<\/p>\n<\/div>\n<div class=\"thrv_wrapper tve_image_caption\" data-css=\"tve-u-194738800da\" style=\"\"><span class=\"tve_image_frame\"><img alt=\"\" class=\"tve_image wp-image-3595\" data-css=\"tve-u-19473881062\" data-height=\"750\" data-id=\"3595\" data-init-height=\"1488\" data-init-width=\"940\" data-width=\"474\" decoding=\"async\" height=\"750\" loading=\"lazy\" src=\"\/blog\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-17-at-2.40.51\u202fPM.png\" style=\"aspect-ratio: auto 940 \/ 1488;\" title=\"Screenshot 2025-01-17 at 2.40.51\u202fPM\" width=\"474\"\/><\/span><\/div>\n<div class=\"thrv_wrapper thrv_text_element\">\n<p>Notice below that the year is represented as type \u2018button\u2019 having text 2027<\/p>\n<\/div>\n<div class=\"thrv_wrapper tve_image_caption\" data-css=\"tve-u-19473889922\" style=\"\"><span class=\"tve_image_frame\"><img alt=\"\" class=\"tve_image wp-image-3596\" data-css=\"tve-u-1947388a61b\" data-height=\"705\" data-id=\"3596\" data-init-height=\"1428\" data-init-width=\"1234\" data-width=\"609\" decoding=\"async\" height=\"705\" loading=\"lazy\" src=\"\/blog\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-17-at-2.41.30\u202fPM.png\" style=\"aspect-ratio: auto 1234 \/ 1428;\" title=\"Screenshot 2025-01-17 at 2.41.30\u202fPM\" width=\"609\"\/><\/span><\/div>\n<div class=\"thrv_wrapper thrv_text_element\">\n<p>\u00a0Once we click the desired year (using above), the 12 months come up, see below<\/p>\n<\/div>\n<div class=\"thrv_wrapper tve_image_caption\" data-css=\"tve-u-1947389049a\" style=\"\"><span class=\"tve_image_frame\"><img alt=\"\" class=\"tve_image wp-image-3597\" data-css=\"tve-u-194738911a1\" data-height=\"634\" data-id=\"3597\" data-init-height=\"1376\" data-init-width=\"1234\" data-width=\"569\" decoding=\"async\" height=\"634\" loading=\"lazy\" src=\"\/blog\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-17-at-2.41.59\u202fPM.png\" style=\"aspect-ratio: auto 1234 \/ 1376;\" title=\"Screenshot 2025-01-17 at 2.41.59\u202fPM\" width=\"569\"\/><\/span><\/div>\n<div class=\"thrv_wrapper thrv_text_element\">\n<p>\u00a0Copy the xpath of January<\/p>\n<p><em>\/\/*[@id=&#8221;root&#8221;]\/div\/div[2]\/div\/span\/div\/div\/div[2]\/div\/div\/button[<\/em><strong><em>1<\/em><\/strong><em>]\/abbr<\/em><\/p>\n<p>Similarly the xpath of Feb and March would be<\/p>\n<p><em>\/\/*[@id=&#8221;root&#8221;]\/div\/div[2]\/div\/span\/div\/div\/div[2]\/div\/div\/button[<\/em><strong><em>2<\/em><\/strong><em>]\/abbr<\/em><\/p>\n<p><em>\/\/*[@id=&#8221;root&#8221;]\/div\/div[2]\/div\/span\/div\/div\/div[2]\/div\/div\/button[<\/em><strong><em>3<\/em><\/strong><em>]\/abbr<\/em><\/p>\n<p>So notice above that <em>[<\/em><strong><em>1<\/em><\/strong><em>]<\/em><em> <\/em><em>[<\/em><strong><em>2<\/em><\/strong><em>]<\/em><em> <\/em><em>[<\/em><strong><em>3<\/em><\/strong><em>]<\/em><em> <\/em>are varying and hence this is a variable, rest all is constant.<\/p>\n<p>So we can break the expression in 3 parts<\/p>\n<\/div>\n<div class=\"thrv_wrapper tve_image_caption\" data-css=\"tve-u-1947389a593\" style=\"\"><span class=\"tve_image_frame\"><img alt=\"\" class=\"tve_image wp-image-3598\" data-css=\"tve-u-1947389b6ba\" data-height=\"429\" data-id=\"3598\" data-init-height=\"994\" data-init-width=\"1234\" data-width=\"532\" decoding=\"async\" height=\"429\" loading=\"lazy\" src=\"\/blog\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-17-at-2.42.33\u202fPM.png\" style=\"aspect-ratio: auto 1234 \/ 994;\" title=\"Screenshot 2025-01-17 at 2.42.33\u202fPM\" width=\"532\"\/><\/span><\/div>\n<div class=\"thrv_wrapper thrv_text_element\">\n<p>\u00a0Next, once we click the desired month (using above), the dates come up, see below<\/p>\n<\/div>\n<div class=\"thrv_wrapper tve_image_caption\" data-css=\"tve-u-194738a237a\" style=\"\"><span class=\"tve_image_frame\"><img alt=\"\" class=\"tve_image wp-image-3599\" data-css=\"tve-u-194738a3294\" data-height=\"567\" data-id=\"3599\" data-init-height=\"1206\" data-init-width=\"1234\" data-width=\"580\" decoding=\"async\" height=\"567\" loading=\"lazy\" src=\"\/blog\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-17-at-2.43.11\u202fPM.png\" style=\"aspect-ratio: auto 1234 \/ 1206;\" title=\"Screenshot 2025-01-17 at 2.43.11\u202fPM\" width=\"580\"\/><\/span><\/div>\n<div class=\"thrv_wrapper thrv_text_element\">\n<p>\u00a0Notice above that the date \u201822\u2019 is represented as type \u2018abbr\u2019 having text 22.\u00a0<\/p>\n<p>So we can write like below<\/p>\n<\/div>\n<div class=\"thrv_wrapper tve_image_caption\" data-css=\"tve-u-194738ab857\" style=\"\"><span class=\"tve_image_frame\"><img alt=\"\" class=\"tve_image wp-image-3600\" data-css=\"tve-u-194738ac49e\" data-height=\"327\" data-id=\"3600\" data-init-height=\"690\" data-init-width=\"1234\" data-width=\"585\" decoding=\"async\" height=\"327\" loading=\"lazy\" src=\"\/blog\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-17-at-2.43.45\u202fPM.png\" style=\"aspect-ratio: auto 1234 \/ 690;\" title=\"Screenshot 2025-01-17 at 2.43.45\u202fPM\" width=\"585\"\/><\/span><\/div>\n<div class=\"thrv_wrapper thrv_text_element\">\n<p>\u00a0Execute.<\/p>\n<p>Notice below that respective year\/month\/date gets selected<\/p>\n<\/div>\n<div class=\"thrv_wrapper tve_image_caption\" data-css=\"tve-u-194738b7475\" style=\"\"><span class=\"tve_image_frame\"><img alt=\"\" class=\"tve_image wp-image-3601\" data-css=\"tve-u-194738b8c86\" data-height=\"396\" data-id=\"3601\" data-init-height=\"870\" data-init-width=\"1234\" data-width=\"561\" decoding=\"async\" height=\"396\" loading=\"lazy\" src=\"\/blog\/wp-content\/uploads\/2025\/01\/Screenshot-2025-01-17-at-2.44.41\u202fPM.png\" style=\"aspect-ratio: auto 1234 \/ 870;\" title=\"Screenshot 2025-01-17 at 2.44.41\u202fPM\" width=\"561\"\/><\/span><\/div>\n<div class=\"thrv_wrapper thrv_text_element\">\n<p>\u00a0So this is how we can handle the calendars.<\/p>\n<p><strong>Source code<\/strong><\/p>\n<p><strong>package<\/strong> com.rsa.playwrightjava;<\/p>\n<p><\/p>\n<p><strong>import<\/strong> org.testng.annotations.AfterMethod;<\/p>\n<p><strong>import<\/strong> org.testng.annotations.BeforeMethod;<\/p>\n<p><strong>import<\/strong> org.testng.annotations.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.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> Blog34_Calendar_Example1_PWJava {<\/p>\n<p><strong>private<\/strong> Browser browser;<\/p>\n<p><strong>private<\/strong> Page page;<\/p>\n<p>@BeforeMethod<\/p>\n<p><strong>public<\/strong><br \/>\n<strong>void<\/strong> setUp() {<\/p>\n<p>Playwright playwright = Playwright.<em>create<\/em>();\u00a0<\/p>\n<p>browser = playwright.chromium().launch(<strong>new<\/strong> BrowserType.LaunchOptions().setHeadless(<strong>false<\/strong>));<\/p>\n<p>page = browser.newPage();<\/p>\n<p>}<\/p>\n<p>@Test<\/p>\n<p><strong>public<\/strong><br \/>\n<strong>void<\/strong> test_1() {<\/p>\n<p><strong>int<\/strong> month = 1;<\/p>\n<p>String date = &#8220;15&#8221;;<\/p>\n<p>String year = &#8220;2027&#8221;;<\/p>\n<p><\/p>\n<p>page.navigate(&#8220;https:\/\/rahulshettyacademy.com\/seleniumPractise\/#\/offers&#8221;);<\/p>\n<p>\/\/click delivery date field<\/p>\n<p>page.locator(&#8220;.react-date-picker__inputGroup&#8221;).click();<\/p>\n<p>\/\/click month-year label (example March 2024)<\/p>\n<p>page.locator(&#8220;.react-calendar__navigation__label&#8221;).click();<\/p>\n<p>\/\/click year label (example 2024)<\/p>\n<p>page.locator(&#8220;.react-calendar__navigation__label&#8221;).click();<\/p>\n<p><\/p>\n<p>\/\/click Year (example 2027)<\/p>\n<p>page.locator(&#8220;\/\/button[text()='&#8221;+year+&#8221;&#8216;]&#8221;).click();<\/p>\n<p><\/p>\n<p>\/\/click month (example January)<\/p>\n<p>\/\/page.locator(&#8220;\/\/*[@id=&#8221;root&#8221;]\/div\/div[2]\/div\/span\/div\/div\/div[2]\/div\/div\/button[1]\/abbr&#8221;).click();<\/p>\n<p>page.locator(&#8220;\/\/*[@id=&#8221;root&#8221;]\/div\/div[2]\/div\/span\/div\/div\/div[2]\/div\/div\/button[&#8221; + month + &#8220;]\/abbr&#8221;).click();<\/p>\n<p>\/\/click date (example 15)<\/p>\n<p>page.locator(&#8220;\/\/abbr[text()='&#8221;+date+&#8221;&#8216;]&#8221;).click();<\/p>\n<p>}<\/p>\n<p>@AfterMethod<\/p>\n<p><strong>public<\/strong><br \/>\n<strong>void<\/strong> tearDown() {<\/p>\n<p>page.pause();<\/p>\n<p>browser.close();<\/p>\n<p>page.close();<\/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 be utilizing Playwright Java to handle calendars and date picks. Topics that we will cover: Select date\/month\/year on a given website Source code Select date\/month\/year on a given website Go to https:\/\/rahulshettyacademy.com\/seleniumPractise\/#\/offers\u00a0 Our goal is to automate the selection of \u2018Delivery Date\u2019 calendar that is shown above. We will first [&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-3587","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\/3587","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=3587"}],"version-history":[{"count":0,"href":"https:\/\/rahulshettyacademy.com\/blog\/index.php\/wp-json\/wp\/v2\/posts\/3587\/revisions"}],"wp:attachment":[{"href":"https:\/\/rahulshettyacademy.com\/blog\/index.php\/wp-json\/wp\/v2\/media?parent=3587"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rahulshettyacademy.com\/blog\/index.php\/wp-json\/wp\/v2\/categories?post=3587"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rahulshettyacademy.com\/blog\/index.php\/wp-json\/wp\/v2\/tags?post=3587"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}