Question

WebPage : http://www.makemytrip.com

I have tried using X-path but I am getting No Such Element Exception. Here is the code below:

driver.findElement(By.xpath(".//*[@id='ui-datepicker-div']/div[2]/div/a/span")).click();


    /*DatePicker is a table.So navigate to each cell   
       * If a particular cell matches value 13 then select it  
       */  
      WebElement dateWidget = driver.findElement(By.id(".//*[@id='ui-datepicker-div']/div[1]"));  
      List<WebElement> rows=dateWidget.findElements(By.tagName("tr"));  
      List<WebElement> columns=dateWidget.findElements(By.tagName("td"));

      System.out.println("Rows count :" + rows.size());
      System.out.println("Column count :" + columns.size());

      for (WebElement cell: columns)
      {  
          //Select 13th Date   
          if (cell.getText().equals("13"))
          {  
              cell.findElement(By.linkText("13")).click();  
              break;  
          }  
      }
Was it helpful?

Solution

I tried with updated makemetrip website:

WebElement dateWidget = driver.findElement(By.xpath("//div[@id='js-filterOptins']"));  

dateWidget= dateWidget.findElement(By.xpath("//div[@class='dateFilter hasDatepicker']/div/div"));


List<WebElement> columns=dateWidget.findElements(By.tagName("td"));

System.out.println("Column count :" + columns.size());

for (WebElement cell: columns)
{  
     //Select 16th Date   
     if (cell.getText().equals("16"))
     {  
         cell.findElement(By.linkText("16")).click(); 
         System.out.println(cell);
         break;  
     }  
}

OTHER TIPS

Please change your code

driver.findElement(By.xpath(".//*[@id='ui-datepicker-div']/div[2]/div/a/span")).click();


/*DatePicker is a table.So navigate to each cell   
   * If a particular cell matches value 13 then select it  
   */  
WebElement dateWidget = driver.findElement(By.id(".//*[@id='ui-datepicker-div']/div[1]"));  

to this

driver.findElement(By.xpath("//a[@tabindex='35']")).click();
WebElement dateWidget = driver.findElement(By.xpath(".//*[@id='ui-datepicker-div']/div[1]"));  

Here you have used id instead of xpath. Please change it.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top