使用Python Selenium无法修改Chrome默认下载目录问题排查
问题排查与修复方案
直接说几个导致下载目录不生效的核心问题,对应修改即可:
1. 下载路径的冗余转义
你用了原始字符串前缀r,还在末尾加了双反斜杠,虽然语法合法,但容易造成配置识别异常,改成单反斜杠结尾更稳妥:
"download.default_directory": r"C:\Users\danish.zahid\Downloads\pubsmed\"
或者不用原始字符串,用标准双反斜杠格式:
"download.default_directory": "C:\\Users\\danish.zahid\\Downloads\\pubsmed\\"
2. 缺少关键下载偏好配置
Chrome的下载规则需要补充两个参数,确保弹窗被拦截、文件直接下载不跳转打开,否则会忽略自定义目录设置:
在prefs字典里添加:
"profile.default_content_settings.popups": 0, "download.extensions_to_open": ""
3. ChromeDriver与Chrome版本不匹配
这是最容易忽略的点——必须保证你的ChromeDriver版本和本地安装的Chrome浏览器大版本完全一致(比如Chrome是118.x,ChromeDriver也要用118.x版本),版本不匹配会导致多数自定义配置失效。
4. 残留Chrome进程干扰配置
Jupyter运行脚本后,有时Chrome进程没有完全退出,新启动的浏览器会复用旧配置。运行脚本前,先打开任务管理器杀掉所有chrome.exe和chromedriver.exe进程,再重新执行代码。
修改后的完整代码
from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.chrome.service import Service from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import Select options = Options() options.add_argument("start-maximized") options.add_argument("--disable-popup-blocking") # 新增:全局禁用弹窗拦截 options.add_experimental_option("excludeSwitches", ["enable-automation"]) options.add_experimental_option('useAutomationExtension', False) options.add_experimental_option("prefs", { "download.default_directory": r"C:\Users\danish.zahid\Downloads\pubsmed\", "download.prompt_for_download": False, "download.directory_upgrade": True, "profile.default_content_settings.popups": 0, # 新增:拦截下载弹窗 "download.extensions_to_open": "" # 新增:所有文件直接下载不打开 }) study_title = "Pan-cancer single-cell landscape of tumor-infiltrating T cells" s = Service(r"C:\Users\danish.zahid\Downloads\chromedriver_win32\chromedriver.exe") browser = webdriver.Chrome(service=s, options=options) browser.get("https://pubmed.ncbi.nlm.nih.gov/") search_box = browser.find_element(By.ID, "id_term") search_box.send_keys(study_title) search_box.send_keys(Keys.RETURN) save_button = browser.find_element(By.XPATH, "//*[@id='save-results-panel-trigger']") save_button.click() dropdownlist = browser.find_element(By.ID, "save-action-format") select_dropdown = Select(dropdownlist) select_dropdown.select_by_visible_text("PubMed") download_file = browser.find_element(By.XPATH, "//*[@id='save-action-panel-form']/div[2]/button[1]") download_file.click() # 可选:等待下载完成再关闭浏览器,避免提前终止导致下载中断 import time time.sleep(5) browser.quit()
额外排查点
如果还是不生效,试试把下载目录改成更简单的路径(比如C:\Temp\PubMed),避免路径包含特殊字符或需要管理员权限的目录——部分系统目录会限制写入,导致Chrome自动回退到默认下载路径。
内容的提问来源于stack exchange,提问作者Danish Zahid Malik
相关产品推荐
相关产品推荐

