
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Automate Calendar Using Selenium WebDriver for Testing
We can automate a calendar using Selenium webdriver. It may be a bit difficult to automate tests on a calendar since the selection of day, month, and year can be different in web UI from one calendar to another.
A calendar can be in the form of a dropdown selection or with backward and forward buttons to select up and down in dates or with any other features. Let us see an example of selection of the 03/02/2021(2nd March, 2021) date in the below calendar −
In the above example, the calendar is within a table. A table is represented by <table> tag and its rows are represented by the <tr> tag and columns by <td> tag.
To pick a date, we have to access all the elements within the td tag with the help of the findElements method.
The findElements method returns a list of elements. We shall iterate over this list(with a loop) and search a particular date. Once we get the expected date, we would click on it and then break out of the loop.
Example
import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; import java.util.concurrent.TimeUnit; import org.openqa.selenium.By; import java.util.List; public class CalendarDt{ public static void main(String[] args) { System.setProperty("webdriver.gecko.driver", "C:\Users\ghs6kor\Desktop\Java\geckodriver.exe"); WebDriver driver = new FirefoxDriver(); //implicit wait driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); //URL launch driver.get("https://jqueryui.com/datepicker/#date%E2%88%92range"); //identify and switch to frame WebElement r = driver.findElement(By.xpath("//iframe[@class='demo-frame']")); driver.switchTo().frame(r); //identify element WebElement e = driver.findElement(By.id("datepicker")); e.click(); //identify elements with td tag in list List<WebElement> d =driver.findElements(By.xpath("//table/tbody/tr/td")); //iterate list for (int i = 0; i<d.size(); i++) { //check expected data String s = d.get(i).getText(); if (s.equals("2")) { d.get(i).click(); break; } } //get data selected String m = e.getAttribute("value"); System.out.print("Date selected in calendar is: "+ m); //close browser driver.quit(); } }