簡體   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