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

如何用Selenium点击匈牙利Hudex网站的Month按钮?

问题分析与解决方案

核心问题

你的代码存在两个关键问题导致「Month」按钮点击无响应:

  1. XPath语法错误:按钮定位的XPath写法不符合规范,无法正确匹配目标元素
  2. 未等待元素可交互:直接调用find_element可能元素还未完全加载或处于不可点击状态

修正步骤

1. 修复XPath定位

  • Cookie按钮的正确XPath://button[@class="button primary" and normalize-space(text())="Accept"](用normalize-space处理文本可能存在的空格)
  • Month按钮的正确XPath://a[@class="button text-nowrap" and normalize-space(text())="Month"]

2. 使用显式等待确保元素可点击

利用WebDriverWait等待元素处于可点击状态后再执行点击操作,避免因元素未加载完成导致的无响应。

3. 优化代码结构

移除重复导入的模块,使用Service管理ChromeDriver路径,提升代码规范性。

修正后的完整代码

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
from selenium.webdriver.chrome.service import Service
import pandas as pd
import time

# 初始化ChromeDriver服务
service = Service("C:/Users/diyorda02/Downloads/chromedriver-win64/chromedriver-win64/chromedriver.exe")
driver = webdriver.Chrome(service=service)
driver.get("https://hudex.hu/en/market-data/power/daily-data#short-term")

# 等待并点击Cookie弹窗的Accept按钮
wait = WebDriverWait(driver, 10)
accept_cookie_btn = wait.until(EC.element_to_be_clickable((By.XPATH, '//button[@class="button primary" and normalize-space(text())="Accept"]')))
accept_cookie_btn.click()

# 等待并点击Month按钮
month_btn = wait.until(EC.element_to_be_clickable((By.XPATH, '//a[@class="button text-nowrap" and normalize-space(text())="Month"]')))
month_btn.click()

# 后续提取下月期货数据的代码...

# 关闭浏览器(可选)
# driver.quit()

额外注意事项

  • 如果页面存在iframe,需要先切换到对应的iframe再定位元素(检查页面源码确认)
  • 若按钮点击后页面有加载延迟,可添加time.sleep(2)等待页面更新,但优先使用显式等待而非强制休眠

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 23:25:20