umanizer
@umanizer (uma nizer)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

スクレイピングでpdfファイルの印刷方法。

解決したいこと

etcの利用照会サービスをスクレイピングして各車両の利用明細を印刷したいです。

発生している問題・エラー

スクリーンショット (1).png
etc利用照会サービスにログインをして車両、日付を絞り込み、画像のようなプレビューまで進めましたがここで印刷を実行しても元のウェブページが印刷され目的が達成できません。

#クロムを立ち上げてETC利用照会サービスへ
from selenium import webdriver
#オプションを定義
options = webdriver.ChromeOptions()
options.add_argument('--kiosk-printing')
browser = webdriver.Chrome(options=options)

という設定を行いログイン、車両、日付絞り込みをしていきますがコードは省略します。
そして上記の画像までたどり着き、印刷をかけたい目的の画面なので下記のコードのように実行しましたが
元のウィンドウのウェブページが印刷されました。

#印刷
browser.execute_script('window.print();')

自分で試したこと

元のウィンドウと印刷したいウィンドウが別のため、ウィンドウの切り替えを行えば上手くいくのではないかと思い元のウェブページのほうに切り替えたりしましたが結果は同じでした。

根本的なとこで勘違いしている可能性が高いので、もしわかれば教えてください。

0

2Answer

PythonもSeleniumも知らずに書くことをお許しください。

ブラウザを起動したwindowでなく、browserのウィンドウへprintメッセージを送るのではないでしょうか。
browser.print_page();みたいなことはできないでしょうか。

0Like

Comments

  1. @umanizer

    Questioner

    コメントありがとうございます。
    僕はプログラミング初心者で何も知らないレベルなので全然問題ありません。むしろ、他の言語でも経験者の方のご意見とても嬉しいです。ご指摘の部分については、何も考えていませんでした。おっしゃる通りだと思いますので調べてみますね。ありがとうございます。

#印刷したい新しいタブに移動
browser.switch_to.window(browser.window_handles[1])
#印刷ダイアログ
browser.execute_script('window.print();')
#タブを閉じる
browser.close()
#元に戻る
browser.switch_to.window(browser.window_handles[0])
で、どうでしょう?

0Like

Your answer might help someone💌