[英]How to save web page as pdf automatically in Selenium python
我正在尝试将 web 页面保存为 PDF 但我得到的只是文件名选择 window。 如何自动输入文件名并保存?
settings = {
"appState": {
"recentDestinations": [{
"id": "Save as PDF",
"origin": "local",
"account": "",
"margin": 0,
'size': 'auto'
}],
"selectedDestinationId": "Save as PDF",
"version": 2,
"margin": 0,
'size': 'auto'
}
}
#There is probably a lot of excess here, I tried to use everything that can help
prefs = {'printing.print_preview_sticky_settings': json.dumps(settings),
'profile.default_content_settings.popups': 0,
'download.name': 'test.pdf', #It doesn't work(
'download.default_directory': download_path,
'savefile.default_directory': download_path,
'download.prompt_for_download': False,
"download.directory_upgrade": True,
"safebrowsing_for_trusted_sources_enabled": False,
"safebrowsing.enabled": True,
"download.extensions_to_open": "",
"plugins.always_open_pdf_externally": True,
}
options.add_experimental_option('prefs', prefs)
options.add_argument('--kiosk-printing')
driver = webdriver.Chrome(service=ser, options=options)
driver.maximize_window()
driver.get('url')
driver.execute_script('window.print();')
time.sleep(20)
我在互联网上找不到解决方案,我尝试了所有可能的选项,但它对我不起作用。
Selenium 中没有内置的 function 允许您将 web 页面保存为 ZBCD1B640617759BA8DA1 但是,您可以使用第三方工具(例如 wkhtmltopdf)来完成此操作。
从官方网站下载 wkhtmltopdf 二进制文件并将它们安装在您的系统上。
将 wkhtmltopdf 二进制文件添加到系统 PATH 中,以便 Selenium 可以找到它。
save_as_pdf function 采用 Selenium webdriver 实例和文件名 arguments 并将当前页面保存为 Selenium
def save_as_pdf(driver, filename): driver.execute_script('window.print();') sleep(5) with open(filename, 'wb') as file: file.write(driver.page_source.encode('utf- 8'))
我能够使用 pyautogui 库解决这个问题。 虽然我认为这不是最好的解决方案
import pyautogui as pag
driver.execute_script('window.print();')
time.sleep(20)
pag.typewrite('test.pdf')
time.sleep(1)
pag.press("enter")
time.sleep(20)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.