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

使用Python Selenium Select方法选择日历月份遇超时错误求助

问题分析与解决方案

核心问题

  1. 非原生<select>元素:目标网站的日历月份选择器是自定义模拟下拉组件(基于Pikaday库),并非HTML原生<select>标签,Selenium的Select类仅支持原生下拉元素,因此无法识别操作。
  2. 动态ID定位失效:你使用的XPATH中pika-title-yj是动态生成的ID(后缀yj随页面加载变化),每次刷新页面ID都会改变,导致元素定位超时。

修正后的代码实现

以下代码通过模拟用户真实点击流程,适配自定义下拉组件与动态元素:

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()
driver.get("https://www.vegasinsider.com/mlb/matchups/")
wait = WebDriverWait(driver, 15)

# 点击打开日历控件
datepicker = wait.until(EC.element_to_be_clickable((By.ID, 'datepicker')))
datepicker.click()

# 点击月份标题,展开月份选择列表
month_title = wait.until(EC.element_to_be_clickable((By.CLASS_NAME, 'pika-label')))
month_title.click()

# 选择目标月份(示例为June)
target_month = wait.until(EC.element_to_be_clickable((By.XPATH, "//div[@class='pika-select pika-select-month']/div[text()='June']")))
target_month.click()

关键说明

  • 用class替代动态ID:通过pika-label类定位月份标题,避免动态ID带来的定位失效问题。
  • 模拟真实操作逻辑:先点击月份标题展开下拉列表,再点击目标月份选项,完全匹配用户手动操作流程。
  • 延长等待时长:将等待时间从10秒调整为15秒,适配网站加载速度,避免因元素加载慢导致的超时。

内容的提问来源于stack exchange,提问作者Moeed Azhar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 03:45:49