将 Selenium ChromeDriver UserPreferences 设置为另存为 PDF

Ell*_*iot 3 selenium selenium-chromedriver selenium-webdriver

我正在使用 ChromeDriver 2.33 并使用 kiosk 打印自动单击“打印预览”对话框上的“打印”按钮,但是它将文档发送到打印机而不是 PDF。

我在这个堆栈溢出问题上尝试了解决方案,但无济于事。

这是我正在使用的代码:

ChromeOptions o = new ChromeOptions();
o.AddArgument("--kiosk-printing");
o.AddUserProfilePreference("printing.print_preview_sticky_settings.appState", "{\"version\":2,\"isGcpPromoDismissed\":false,\"selectedDestinationId\":\"Save as PDF\"");
chrome = new ChromeDriver(dir, o);
Run Code Online (Sandbox Code Playgroud)

谁能告诉我如何将打印机从实际打印机设置为 PDF?

小智 5

尝试添加Save as PDFrecentDestinations

import json
settings = {
    "appState": {
        "recentDestinations": [{
            "id": "Save as PDF",
            "origin": "local"
        }],
        "selectedDestinationId": "Save as PDF",
        "version": 2
    }  
}
prefs = {'printing.print_preview_sticky_settings': json.dumps(settings)}
chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option('prefs', prefs)
chrome_options.add_argument('--kiosk-printing')

driver = webdriver.Chrome(chrome_options=chrome_options)
Run Code Online (Sandbox Code Playgroud)

  • 使用最新版本的Chrome(78.0.3904.108),需要在`"recentDestinations"`中添加`"account": ""`。 (3认同)