Selenium Python日期选择器问题:无法指定选择特定日期
Selenium日期选择问题解决方案
直接通过ID定位目标日期
从你提供的HTML结构来看,每个日期单元格的ID包含了明确的日期标识(如20221129),这是最可靠的定位方式:
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC driver = webdriver.Chrome() wait = WebDriverWait(driver, 10) # 替换成你需要选择的日期,格式为YYYYMMDD target_date = "20221129" # 拼接元素ID,注意末尾的O/X是日期控件的状态标识,根据实际情况调整 date_id = f"subview1:itemViewFragment1:itemForm1:texti0023_POPUP_DAY_{target_date}O" # 等待元素可点击后点击 wait.until(EC.element_to_be_clickable((By.ID, date_id))).click()
按日期文本内容定位
如果ID的后缀(O/X)不固定,可以通过<span>中的日期文本定位:
target_day = "29" # 目标日期的日份 # 用XPath定位包含目标文本的日期单元格 date_element = wait.until(EC.element_to_be_clickable( (By.XPATH, "//td[contains(@class, 'inputText_DatePicker-CurrentMonth')]/span[text()='{}']/..".format(target_day)) )) date_element.click()
关键注意点
- 确保日期选择器已弹出:如果需要点击输入框才会唤起日期控件,先执行输入框的点击操作:
date_input = wait.until(EC.element_to_be_clickable((By.ID, "subview1:itemViewFragment1:itemForm1:texti0023"))) date_input.click() - 处理月份切换:如果目标日期不在当前显示的月份,需要先点击月份切换按钮(通常是左右箭头),切换到对应月份后再选择日期。
- 解决元素遮挡问题:如果点击时提示元素不可见,用JS强制点击:
driver.execute_script("arguments[0].click();", date_element)
内容的提问来源于stack exchange,提问作者sharwee
相关产品推荐
相关产品推荐

