Skip to content

Instantly share code, notes, and snippets.

@theDavidBarton
Created September 10, 2020 20:03
Show Gist options
  • Save theDavidBarton/2903db9e0116ad70575f0eaeff594280 to your computer and use it in GitHub Desktop.
Save theDavidBarton/2903db9e0116ad70575f0eaeff594280 to your computer and use it in GitHub Desktop.
Universal Date Picker date selector puppeteer script
// answered at: https://stackoverflow.com/questions/63796579/use-puppeteer-to-select-by-text/63819936#63819936
let calendarGridItemCount = await page.$$eval('.calendar-grid > ul > li', el => el.length)
let calMonthYear = await page.$eval('.calendar-monthname', month => month.innerText)
let calDays = await page.$$eval('.calendar-grid > ul > li', days => days.map(d => d.innerText))
let today = new Date()
today.setHours(0, 0, 0, 0)
let sevenDaysLater = new Date()
sevenDaysLater.setDate(today.getDate() + 7)
sevenDaysLater.setHours(0,0,0,0)
// 1600207200000 (Wed Sep 16 2020 00:00:00 GMT+0200 (Central European Summer Time))
const wantedDate = Date.parse(sevenDaysLater)
for (let i = 0; i < calendarGridItemCount; i++) {
let examinedCalendarGridItem = Date.parse(`${calDays[i]} ${calMonthYear}`)
if (examinedCalendarGridItem == wantedDate) {
const dayFound = (await page.$$('.calendar-grid > ul > li'))[i]
await dayFound.click()
break
} else if (examinedCalendarGridItem !== wantedDate && i === calendarGridItemCount - 1) {
await page.click('.calendar-next')
calendarGridItemCount = await page.$$eval('.calendar-grid > ul > li', el => el.length)
calMonthYear = await page.$eval('.calendar-monthname', month => month.innerText)
calDays = await page.$$eval('.calendar-grid > ul > li', days => days.map(d => d.innerText))
i = 0
continue
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment