You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Selenium Python设置自定义日期无效,提交仍显示当前日期

解决日期选择器设置日期后提交仍返回当前数据的问题

直接修改输入框的value并触发input事件之所以无效,是因为很多前端日期选择器组件(比如jQuery UI Datepicker、Element UI DatePicker这类)会维护内部状态变量,不会仅通过输入框的value值同步状态。提交表单时,组件实际传递的是内部维护的日期值,而非你修改的input显示值。

正确的做法是模拟真实用户的操作流程:打开日期选择器面板,再选择目标日期。以下是具体实现步骤:

步骤1:点击日期输入框,打开选择器面板

start_date_input = driver.find_element(By.ID, 'viewer_par_tab_t0_pForm_edStartDate_text')
start_date_input.click()  # 触发面板弹出

步骤2:切换到目标年月(如果当前面板不是目标年月)

如果当前显示的年月不是2023年7月,需要先切换到对应年月:

# 示例:若选择器用下拉框选年月
from selenium.webdriver.support.ui import Select

# 选择2023年
year_select = driver.find_element(By.XPATH, "//select[contains(@class, 'datepicker-year')]")
Select(year_select).select_by_value("2023")

# 选择7月(部分组件月份索引从0开始,7月对应值为6,需根据实际DOM调整)
month_select = driver.find_element(By.XPATH, "//select[contains(@class, 'datepicker-month')]")
Select(month_select).select_by_value("6")

如果是通过箭头按钮切换年月:

target_month_year = "July 2023"
current_month_year = driver.find_element(By.XPATH, "//div[contains(@class, 'datepicker-header')]").text

# 循环点击箭头直到切换到目标年月
while current_month_year != target_month_year:
    next_btn = driver.find_element(By.XPATH, "//button[contains(@class, 'datepicker-next')]")
    next_btn.click()
    current_month_year = driver.find_element(By.XPATH, "//div[contains(@class, 'datepicker-header')]").text

步骤3:点击目标日期

定位到日期为1的单元格并点击:

# 根据文本定位日期单元格,注意部分组件日期文本带前导零,需匹配实际显示
target_date = driver.find_element(By.XPATH, "//td[text()='1']")
target_date.click()

补充提示

  • 以上XPath和类名仅为示例,你需要根据截图中的实际DOM结构调整定位方式,比如找到日期选择器面板的容器、年月控件、日期单元格的真实属性。
  • 操作前建议添加显式等待,避免元素未加载完成报错:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 等待输入框可点击
start_date_input = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.ID, 'viewer_par_tab_t0_pForm_edStartDate_text'))
)

内容的提问来源于stack exchange,提问作者taha yab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 21:22:10