SeleniumでWEBページをPDFとして保存するには、Chrome起動時に--kiosk-printing(キオスク)オプションを指定します。このオプションを指定すると、印刷ダイアログを開いた後に、印刷ボタンを自動で押してくれます。

ドライバ操作(Ruby)

# --kiosk-printingオプションを付けてChromeを起動
caps = Selenium::WebDriver::Remote::Capabilities.chrome(
    "chromeOptions" => {
        "args" => ['--kiosk-printing'],
        "prefs" => {
            download: {
                directory_upgrade: true,
                prompt_for_download: false
            }
        }
    })

driver = Selenium::WebDriver.for :chrome, :desired_capabilities => caps

# 指定のURLにアクセス
driver.get('https://www.google.com')

# PDFを保存したいページに遷移後、JSを実行
driver.execute_script('return window.print();')

印刷のダイアログが出ない

--kiosk-printingのオプションが使えない(印刷のダイアログが出ない)パターンがありました。

それはchrome起動時に、ヘッドレスモードのオプションを付けた時です。私がヘッドレスモードでSeleniumを実行したときは、エラー出ませんが、PDFはどこにも保存されていませんでした。原因は分かりませんが、kioskとヘッドレスモードの併用は出来ないようです。

ヘッドレスモードが分からないという方は、以下の記事をご確認ください。

以上です。

参考

Seleniumで印刷(print preview)を経てPDFを保存する方法