如何在python中自动化datepicker?

2024-04-23 15:05:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要找一个航班,但我不能选择我想要的日期。你知道吗

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()

Tags: textimportbrowseriddatebytimeelement
1条回答
网友
1楼 · 发布于 2024-04-23 15:05:13

代码的问题是,当您单击next按钮时,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()

相关问题 更多 >