繁体   English   中英

如何在 Selenium Z23EEEB4347BDD26BFC6B7EE9A3B755 中自动将 web 页面保存为 pdf

[英]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)来完成此操作。

  1. 安装 wkhtmltopdf

从官方网站下载 wkhtmltopdf 二进制文件并将它们安装在您的系统上。

  1. 将 wkhtmltopdf 添加到您的 PATH

将 wkhtmltopdf 二进制文件添加到系统 PATH 中,以便 Selenium 可以找到它。

  1. 使用 save_as_pdf function

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM