使用Selenium Python从Chrome Viewer下载PDF报错求助
问题修正方案
核心问题梳理
- 配置未生效:你在操作完浏览器后才创建配置并重新初始化WebDriver,导致之前的登录会话直接被丢弃,PDF下载配置根本没应用到实际操作的浏览器实例上。
- 废弃参数警告:
chrome_options是旧版参数,现在需要用options替代。 - 代码冗余与错误:存在重复导入、无效导入(
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
相关产品推荐
相关产品推荐

