Как автоматизировать DatePicker в Селене Python? - PullRequest
0 голосов
/ 16 июня 2019

Мне нужно найти рейс с селеном питона, но я не смог выбрать желаемую дату.

import time
import selenium
from selenium import webdriver

browser = webdriver.Chrome()
browser.get("https://www.spicejet.com/")

departureButton = browser.find_element_by_id("ctl00_mainContent_ddl_originStation1_CTXT")

departureButton.click()
browser.find_element_by_partial_link_text("Kolkata").click()

arivalButton = browser.find_element_by_id("ctl00_mainContent_ddl_destinationStation1_CTXT")
arivalButton.click()
browser.find_element_by_partial_link_text("Goa").click()

date_position = browser.find_element_by_id("ctl00_mainContent_view_date1")
date_position.click()

search_date = "10-September 2019"
dep_date1 = search_date.split("-")

    dep_month = dep_date[1]
dep_day = dep_date[0]
cal_head = browser.find_elements_by_class_name("ui-datepicker-title")
for month_hd in cal_head:
    month_year = month_hd.text
    if dep_month == month_year:
        pass
    else:
        nxt = browser.find_element_by_class_name("ui-icon-circle-triangle-e").click()

    print(month_year) 
time.sleep(2)
browser.close()

1 Ответ

0 голосов
/ 17 июня 2019

Проблема с вашим кодом заключается в том, что при нажатии следующей кнопки DOM изменяется, а ссылка на элемент, сохраненная в ваших переменных, не обновляется. Вот почему он дает вам исключение ссылки на устаревшие элементы. Вместо использования переменных используйте локатор для каждого доступа к элементам календаря, и он будет работать.

Попробуйте:

import time
import selenium
from selenium import webdriver

browser = webdriver.Chrome()
browser.get("https://www.spicejet.com/")

departureButton = browser.find_element_by_id("ctl00_mainContent_ddl_originStation1_CTXT")

departureButton.click()
browser.find_element_by_partial_link_text("Kolkata").click()

arivalButton = browser.find_element_by_id("ctl00_mainContent_ddl_destinationStation1_CTXT")
arivalButton.click()
browser.find_element_by_partial_link_text("Goa").click()

date_position = browser.find_element_by_id("ctl00_mainContent_view_date1")
date_position.click()

search_date = "10-September 2019"
dep_date = search_date.split("-")

dep_month = dep_date[1]
dep_day = dep_date[0]

while browser.find_element_by_class_name("ui-datepicker-title").text != dep_month:
    browser.find_element_by_css_selector("a[data-handler='next']").click()

browser.find_element_by_xpath("//table//a[text()='"+dep_day+"']").click()


time.sleep(2)
browser.close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...