Can anyone help me with the Selenium webdriver (in Python) code to automatically select a date in the input date in the above link.

https://www.nseindia.com/products/content/derivatives/equities/archieve_fo.htm

It is just one line of code but I've wasted hours behind it. someone please kindly help. I've tried the .send_keys() function and have searched for hours about the datepicker issue. Kindly help.


You havn't mentioned exactly where you are stuck while automatically sending a date in the <input> tag. How ever the <input> tag is having type as text and the following code block works perfect :

  • Code Block :

     from selenium import webdriver
    
     driver=webdriver.Firefox(executable_path=r'C:\path\to\geckodriver.exe')
     driver.get("https://www.nseindia.com/products/content/derivatives/equities/archieve_fo.htm")
     print("Page Title is : %s" %driver.title)
     driver.find_element_by_xpath("//input[@class='textboxdata hasDatepicker' and @id='date']").send_keys("10-04-2018")
    
  • Console Output :

     Page Title is : NSE - National Stock Exchange of India Ltd.
    
  • Snapshot :

NSE


References

You can find a couple of relevant detailed discussion in:

  • Calendar date picker Selenium Python

For instance clicking on the 5 of march 2017:

driver.get("https://www.nseindia.com/products/content/derivatives/equities/archieve_fo.htm")

datepicker = driver.find_element_by_id("date")
datepicker.click()

selectMonth = driver.find_element_by_xpath('//select[@class="ui-datepicker-month"]')
for option in selectMonth.find_elements_by_tag_name('option'):
    if option.text == 'Mar':
        option.click() 
        break

selectYear = driver.find_element_by_xpath('//select[@class="ui-datepicker-year"]')
for option in selectYear.find_elements_by_tag_name('option'):
    if option.text == '2017':
        option.click() 
        break 

days = driver.find_elements_by_xpath('//a[@class="ui-state-default"]')
days[4].click()