如何使用Selenium+Chromedrive更改保存的PDF页面名称



我有一个脚本,它使用Selenium Python下载基于这个问题制作的PDF页面

我目前的目标是更改此文件的名称,使其与我选择的名称一致,然后更改保存文件的目标文件夹。

我的疑虑是:我应该在哪里更改,以便使用我选择的名称保存文件?

即使对";prefs=";变量,文件将继续保存在默认的chrome目录中。

目前我有以下代码:

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless') # Escondendo o navegador
driver = webdriver.Chrome(options=chrome_options)
driver.maximize_window()
settings = {
"recentDestinations": [{
"id": "Save as PDF",
"origin": "local",
"account": "",
}],
"isLandscapeEnabled": True,
"selectedDestinationId": "Save as PDF",
"version": 2,
}
prefs = {
"printing.print_preview_sticky_settings.appState": json.dumps(settings),
"profile.default_content_settings.popups" : 0,
"download.name":"name_file", # ?????? ESTE CÓDIGO NÃO ALTERA O NOME
"download.default_directory": r'C:Usersdiretorio_escolhido\' # ESTE CÓDIGO NÃO ALTERA O DESTINO,
"download.prompt_for_download": False,
"download.directory_upgrade": True,
"safebrowsing.enabled": True
}

chrome_options.add_experimental_option('prefs', prefs)
chrome_options.add_argument('--kiosk-printing')
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get(name_Object.url)
sleep(5) # Pausa para carregar os dados
driver.execute_script('window.print();')
print('Gerou o PDF')

我也面临同样的问题。目前,我找到了以下解决方法:

driver.execute_script("document.title = '{}'".format(filename))

download.default_directory更改为savefile.default_directory,以便您的保存位置正常工作。

遗憾的是,我认为我们无法在下载前更改文件名,但您可以在下载后重命名文件,方法是重命名下载文件夹中的最新文件:

import os    
import shutil
download_folder = "C:\Users\username\Downloads\Test"
filename = max([download_folder + "\" + f for f in os.listdir(Initial_path)],key=os.path.getctime)
shutil.move(filename,os.path.join(Initial_path,r"newPDFName.pdf"))

这个答案使用了上面发布的vimuth的建议,我自己也使用了Python 3.9.4

chrome_driver_path = ChromeDriverManager().install()
service = Service(chrome_driver_path)
service.start()
options = webdriver.ChromeOptions()
options.add_argument('--start-maximized')
settings = {
"recentDestinations": [{
"id": "Save as PDF",
"origin": "local",
"account": "",
}],
"selectedDestinationId": "Save as PDF",
"version": 2
}

prefs = {'printing.print_preview_sticky_settings.appState': json.dumps(settings), 'savefile.default_directory': download_path }
options.add_experimental_option('prefs', prefs)
options.add_argument('--kiosk-printing')
driver = webdriver.Chrome(chrome_driver_path, options=options)

最新更新