1

I am unable to select todays date and time(plus 15 mins time) from the date picker in selenium.

Right now I have written the code for date which not working so here is the code-

 DateFormat dateFormat2 = new SimpleDateFormat("dd/MM/yyyy hh:mm a");
    System.out.println("Format defined");
    Date date2 = new Date();
    System.out.println("Date object creation");
    String today = dateFormat2.format(date2);
    WebElement dateWidget = driver.findElement(By.xpath(".//*[@class='xdsoft_calendar']"));
        System.out.println("Calendar web element");
        List<WebElement> columns=dateWidget.findElements(By.tagName("div"));
        System.out.println("listing web element");
        System.out.println(today);
        //comparing the text of cell with today's date and clicking it.
        for (WebElement cell : columns)
        {
            System.out.println("In for loop"+cell.getText());
            if (cell.getText().equals(today))
            {
                System.out.println("inside if");
                System.out.println(today);
                cell.click();
                break;
            }
        }

Date picker DatePicker

<div class="xdsoft_calendar">
   <table>
      <thead>
         <tr>
            <th>Sun</th>
            <th>Mon</th>
            <th>Tue</th>
            <th>Wed</th>
            <th>Thu</th>
            <th>Fri</th>
            <th>Sat</th>
         </tr>
      </thead>
      <tbody>
         <tr>
            <td data-date="28" data-month="9" data-year="2018" class="xdsoft_date xdsoft_day_of_week0 xdsoft_date xdsoft_disabled xdsoft_other_month xdsoft_weekend">
               <div>28</div>
            </td>
            <td data-date="29" data-month="9" data-year="2018" class="xdsoft_date xdsoft_day_of_week1 xdsoft_date xdsoft_disabled xdsoft_other_month">
               <div>29</div>
            </td>
            <td data-date="30" data-month="9" data-year="2018" class="xdsoft_date xdsoft_day_of_week2 xdsoft_date xdsoft_disabled xdsoft_other_month">
               <div>30</div>
            </td>
         </tr>
      </tbody>
   </table>
</div>

Note: 1.Expected is we should be able to select todays date 2. Current time +15 mins time from the date picker.

Its very tough i found guys, any help would be appreciated

Navarasu
  • 8,209
  • 2
  • 21
  • 32
Sobhit Sharma
  • 697
  • 14
  • 45

2 Answers2

1

The question lacks some details, for instance how the html page of time selection looks, but anyway I will try to guess and help with what is possible to get from the qestion.

As you are not able to select the current date most likely it happens because your condition is not met:

if (cell.getText().equals(today))

cell is a div and it's getText() should return 28, 29, and 30 respectively. And you compare it with the value dateFormat2.format(date2); which most likely return something like 08/11/2018 02:12 PM. Try the following modification (Java 8+):

int currentDay = LocalDate.now().getDayOfMonth();
if (cell.getText().equals(currentDay)) {

}

for hour and minutes logic either add how html looks like or just use LocalDate.now().getHour() to get current hour and implement similar condition to select necessary time. Hint: you might need to scroll to the necessary element.

Take a closer look at LocalTime here

Vladimir Efimov
  • 797
  • 5
  • 13
  • When I am getting blank value in cell.getText(); – Sobhit Sharma Nov 09 '18 at 15:35
  • @SobhitSharma could you please double check the HTML you posted in a question comparing to the one you actually have. If it is actual, then most likely the problem is that in the line WebElement dateWidget = driver.findElement(By.xpath(".//*[@class='xdsoft_calendar']")); you get ANOTHER calendar that is not currently shown. You can double check by changing .findElement to .findElements and check size. If there are multiple - make sure you select the correct one and try one more time. – Vladimir Efimov Nov 09 '18 at 15:50
  • Yes you are right. Its my bad. The issue was in xpath due to which I was not able get the dates from the table and I was getting blank. Thanks again – Sobhit Sharma Nov 12 '18 at 07:18
0
  1. Current time : Calendar cal= Calendar.getInstance();

  2. Add 15 Mins : cal.add(Calendar.MINUTE, 15);

  3. Return as date type : Date date = cal.getTime();

btshepo
  • 16
  • 5