spacepaste

  1.  
  2. import time
  3. import datetime
  4. import logging
  5. from selenium import webdriver
  6. from selenium.webdriver.common.keys import Keys
  7. #from selenium.webdriver.support.ui import Select
  8. # Making loggin configuration
  9. FORMAT = '%(asctime)-15s - %(name)s - %(levelname)s - %(message)s'
  10. logging.basicConfig(filename='makemytrip.log', format=FORMAT, level=logging.INFO, datefmt='%Y-%m-%dT%H:%M:%S')
  11. logger = logging.getLogger('makemytrip')
  12. class bookTrip:
  13. def __init__(self):
  14. logger.info("Initializing bookTrip class")
  15. self.browser = webdriver.Firefox(executable_path='./bin/geckodriver')
  16. self.baseurl = 'https://www.makemytrip.com/flights/'
  17. def datepicker(self):
  18. return self.browser.find_element_by_class_name("ui-datepicker-group-first"), self.browser.find_element_by_class_name("ui-datepicker-group-last")
  19. def flight_booking(self):
  20. logger.info("Starting to look for flights...")
  21. self.browser.get(self.baseurl)
  22. self.from_flight = self.browser.find_element_by_id("hp-widget__sfrom")
  23. self.to_flight = self.browser.find_element_by_id("hp-widget__sTo")
  24. self.from_flight.clear()
  25. self.to_flight.clear()
  26. self.from_flight.send_keys("Delhi")
  27. self.sleeptime(2)
  28. self.to_flight.send_keys("Bangalore")
  29. self.sleeptime(2)
  30. self.depart_time = self.browser.find_element_by_id("hp-widget__depart")
  31. self.return_time = self.browser.find_element_by_id("hp-widget__return")
  32. #self.browser.execute_script('document.getElementById("hp-widget__depart").removeAttribute("readonly")')
  33. #self.browser.execute_script('document.getElementById("hp-widget__depart").removeAttribute("class")')
  34. #self.browser.execute_script('document.getElementById("hp-widget__return").removeAttribute("readonly")')
  35. #self.browser.execute_script('document.getElementById("hp-widget__return").removeAttribute("class")')
  36. #self.date_booking = datetime.datetime.now()
  37. #today = datetime.datetime.strftime(self.date_booking, "%d %b, %a")
  38. #tomorrow = datetime.datetime.strftime(self.date_booking + datetime.timedelta(1), "%d %b, %a")
  39. #self.depart_time.clear()
  40. #self.return_time.clear()
  41. #self.depart_time.send_keys(today)
  42. #self.return_time.send_keys(tomorrow)
  43. #self.depart_time.click()
  44. #self.return_time.click()
  45. #self.sleeptime(2)
  46. #self.browser.find_element_by_id('searchBtn').click()
  47. self.now = datetime.datetime.now()
  48. self.time_delta = datetime.timedelta(1)
  49. self.today = "{}000".format(int(datetime.datetime.strptime(datetime.datetime.strftime(self.now, "%d-%m-%y"), "%d-%m-%y").timestamp()))
  50. self.tomorrow = "{}000".format(int(datetime.datetime.strptime(datetime.datetime.strftime(self.now + self.time_delta, "%d-%m-%y"), "%d-%m-%y").timestamp()))
  51. self.depart_time.click()
  52. date_picker_first, date_picker_last = self.datepicker()
  53. xpath = '//table/tbody/tr/td[@fare-date="{}"]'.format(self.tomorrow)
  54. date_picker_first.find_element_by_xpath(xpath).click()
  55. self.sleeptime(2)
  56. self.return_time.click()
  57. self.sleeptime(2)
  58. date_picker_first, date_picker_last = self.datepicker()
  59. xpath = '//table/tbody/tr/td[@fare-date="{}"]'.format(self.tomorrow)
  60. date_picker_first.find_element_by_xpath(xpath).click()
  61. def sleeptime(self,n):
  62. time.sleep(n)
  63. if __name__ == '__main__':
  64. booktrip = bookTrip()
  65. booktrip.flight_booking()
  66. When executing above program aim getting below error :
  67. $ python3 makemytrip.py
  68. Traceback (most recent call last):
  69. File "makemytrip.py", line 73, in <module>
  70. booktrip.flight_booking()
  71. File "makemytrip.py", line 57, in flight_booking
  72. date_picker_first.find_element_by_xpath(xpath).click()
  73. File "/home/juniour/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webelement.py", line 80, in click
  74. self._execute(Command.CLICK_ELEMENT)
  75. File "/home/juniour/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webelement.py", line 628, in _execute
  76. return self._parent.execute(command, params)
  77. File "/home/juniour/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 320, in execute
  78. self.error_handler.check_response(response)
  79. File "/home/juniour/.local/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
  80. raise exception_class(message, screen, stacktrace)
  81. selenium.common.exceptions.ElementNotInteractableException: Message: Element <td class=" ui-datepicker-week-end "> could not be scrolled into view
  82.