Date pickers let users select dates easily. Testing them ensures the right date is chosen and the app works well.
Date picker strategies in Selenium Java
WebElement dateInput = driver.findElement(By.id("datePicker")); dateInput.click(); // Select date by clicking calendar elements or sending keys // Example: dateInput.sendKeys("2024-06-15");
Use locators like By.id or By.cssSelector to find the date picker input.
Some date pickers allow typing the date, others require clicking calendar days.
WebElement dateInput = driver.findElement(By.id("datePicker")); dateInput.sendKeys("2024-06-15");
dateInput.click();
WebElement day = driver.findElement(By.xpath("//td[text()='15']"));
day.click();dateInput.click(); WebElement nextMonth = driver.findElement(By.cssSelector(".calendar-next")); nextMonth.click(); WebElement day = driver.findElement(By.xpath("//td[text()='10']")); day.click();
This test opens a page with a date picker, clicks the input to open the calendar, selects day 15, then checks if the input value matches the expected date.
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; public class DatePickerTest { public static void main(String[] args) { System.setProperty("webdriver.chrome.driver", "path/to/chromedriver"); WebDriver driver = new ChromeDriver(); try { driver.get("https://example.com/date-picker"); WebElement dateInput = driver.findElement(By.id("datePicker")); dateInput.click(); WebElement day = driver.findElement(By.xpath("//td[text()='15']")); day.click(); String selectedDate = dateInput.getAttribute("value"); if ("2024-06-15".equals(selectedDate)) { System.out.println("Test Passed: Correct date selected."); } else { System.out.println("Test Failed: Date selected is " + selectedDate); } } finally { driver.quit(); } } }
Always wait for the calendar to be visible before clicking days to avoid errors.
Some date pickers use iframes; switch to the iframe first if needed.
Use explicit waits to handle dynamic loading of calendar elements.
Date picker testing ensures users can select dates correctly.
Use clicking or typing strategies depending on the date picker design.
Verify the selected date matches what you expect in your tests.
Practice
Solution
Step 1: Understand the purpose of a date picker
A date picker helps users select dates without typing, reducing errors.Step 2: Identify the testing goal
Testing ensures the date picker works correctly and inputs valid dates.Final Answer:
To allow users to select a date easily and avoid manual input errors -> Option BQuick Check:
Date picker purpose = Easy date selection [OK]
- Confusing date picker with unrelated UI elements
- Thinking date picker changes page speed
- Assuming date picker validates passwords
Solution
Step 1: Identify the locator strategy for id
Use By.id("dateInput") to find element by its id attribute.Step 2: Use click() method on the found element
Calling click() simulates user clicking the date picker input.Final Answer:
driver.findElement(By.id("dateInput")).click(); -> Option DQuick Check:
Use By.id for id attribute [OK]
- Using By.name when id is given
- Using By.className incorrectly
- Using By.tagName with id value
WebElement dateInput = driver.findElement(By.id("dateInput"));
dateInput.click();
dateInput.sendKeys("2024-07-15");
String selectedDate = dateInput.getAttribute("value");
System.out.println(selectedDate);Solution
Step 1: Understand sendKeys sets input value
sendKeys("2024-07-15") inputs the date string into the field.Step 2: getAttribute("value") retrieves the current input value
This returns the exact string typed, which is "2024-07-15".Final Answer:
2024-07-15 -> Option CQuick Check:
sendKeys sets value, getAttribute reads it [OK]
- Expecting formatted date different from input
- Assuming getText() returns input value
- Confusing null with empty string
driver.findElement(By.xpath("//input[@id='dateInput']")).sendKeys("2024-12-01");
What is the most likely cause and fix?Solution
Step 1: Understand NoSuchElementException means element not found
This often happens if element is inside an iframe or not visible yet.Step 2: Check if date picker is inside iframe and switch context
Switching to iframe with driver.switchTo().frame(...) allows access to elements inside it.Final Answer:
The date picker input is inside an iframe; switch to iframe before accessing it -> Option AQuick Check:
Switch to iframe to find elements inside [OK]
- Assuming xpath is always wrong
- Thinking sendKeys can't be used on inputs
- Blaming date format for element not found
Solution
Step 1: Calculate the date 10 days from today in Java
Use LocalDate.now().plusDays(10) to get the target date.Step 2: Open the date picker and click the day matching the target date
Locate the day button by text or attribute and click it to select.Final Answer:
Calculate the target date, open the date picker, then click the day button matching that date -> Option AQuick Check:
Click matching day for pickers without typing [OK]
- Trying to type date when input disallows it
- Ignoring date calculation and clicking wrong day
- Using JavaScript to set value without UI interaction
Ready to prove it?
Pass the test and this pattern moves unknown
