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

如何通过Selenium点击元素下载无直接链接的文件(Python实现)

问题排查与修复方案

核心问题点

  • 重复初始化ChromeOptions实例,覆盖了之前配置的下载路径偏好,导致下载目录设置无效
  • 元素定位前未等待页面加载完成,直接查找元素容易出现未找到的情况
  • driver.Quit()存在语法错误,正确写法是driver.quit()

修复后的完整代码

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

# 仅初始化一次ChromeOptions,配置下载路径
options = webdriver.ChromeOptions()
prefs = {"download.default_directory": "C:/Users/toto/Downloads"}
options.add_experimental_option("prefs", prefs)

driver = webdriver.Chrome(options=options)
# 设置全局隐式等待,提升元素查找稳定性
driver.implicitly_wait(15)

url = 'https://open.efsa.europa.eu/study-inventory/EFSA-Q-2022-00556'
driver.get(url)

# 用显式等待确保元素可点击,避免页面加载慢导致定位失败
download_btn = WebDriverWait(driver, 20).until(
    EC.element_to_be_clickable((By.XPATH, "//button[contains(text(),'Download all evidences')]"))
)
download_btn.click()

# 等待下载完成(可根据文件大小调整等待时长)
driver.implicitly_wait(30)

driver.quit()

备选定位方案(原XPATH失效时使用)

如果按钮文本嵌套在<span>标签内,可尝试以下定位方式:

  • XPATH匹配嵌套文本:"//button[.//span[contains(text(),'Download all evidences')]]"
  • CSS选择器(Chrome 101及以上版本支持):"button:has(span:contains('Download all evidences'))"
  • 按class属性定位(需确认按钮实际class名):By.CLASS_NAME, "对应的class名称"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 19:13:34