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

使用Selenium Python从Chrome Viewer下载PDF报错求助

问题修正方案

核心问题梳理

  1. 配置未生效:你在操作完浏览器后才创建配置并重新初始化WebDriver,导致之前的登录会话直接被丢弃,PDF下载配置根本没应用到实际操作的浏览器实例上。
  2. 废弃参数警告:chrome_options是旧版参数,现在需要用options替代。
  3. 代码冗余与错误:存在重复导入、无效导入(import self),以及错误的get方法赋值(get返回None,不能赋值给变量)。

修正后的完整代码

from time import sleep
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.wait import WebDriverWait
from webdriver_manager.chrome import ChromeDriverManager

# 先配置Chrome选项,指定PDF下载设置
options = Options()
options.add_experimental_option('prefs', {
    "download.default_directory": "C:/Downloads/POD",  # 也可使用原始字符串:r"C:\Downloads\POD"
    "download.prompt_for_download": False,
    "download.directory_upgrade": True,
    "plugins.always_open_pdf_externally": True  # 强制PDF直接下载而非在浏览器中打开
})

# 初始化带配置的WebDriver实例
driver = webdriver.Chrome(
    service=ChromeService(executable_path=ChromeDriverManager().install()),
    options=options  # 用options替代废弃的chrome_options
)

# 打开应用(补充你的登录逻辑)
driver.get("你的应用URL")

# 等待PDF元素加载完成后点击
wait = WebDriverWait(driver, 10)
wait.until(lambda d: d.find_element(By.ID, "XXXX")).click()

# 可选:等待下载完成
sleep(5)

# 关闭浏览器
driver.quit()

关键修改说明

  • 提前配置options并在初始化WebDriver时传入,确保配置生效在同一个操作会话中。
  • 用options参数替代chrome_options,消除DeprecationWarning警告。
  • 改用driver作为实例变量名,避免和WebDriver类名混淆,提升代码可读性。
  • 用WebDriverWait的until方法确保元素可点击,替代直接调用find_element,提升操作稳定性。
  • 移除无用的import self和重复的导入语句。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 04:02:19