ゆるプロ!番外編「Seleniumによる自動化、ヘッドレス設定について」
ゆるいプログラミング講座、略して「ゆるプロ!」
これは気軽に気楽に試せるゆるーいプログラミング学習コンテンツである。今回のお題は「Seleniumによる自動化、ヘッドレス設定について」
概略
ブラウザのヘッドレスとは
ヘッドレスという言葉が聞きなれなかったため調べてみたところ、ディスプレイやキーボード、マウスなどの入出力機器を接続しない状態を示すようだ。従って、ブラウザのヘッドレスとは下記のことを示す
なぜ、設定したいのか
GUIベースで操作させることもよいのだが、CUIベースでバッチを組んだり、スクリプトを組む習慣があったことと、CUIベースのコーティングの方がソースコードの行数を少なくコードを簡素化、また軽量な処理にできる傾向がある。以上から内部的にはブラウザを起動しているとはいえ画面に出さずに処理を進めたい。最終的には「スケジューラの登録」を想定している。
Seleniumをヘッドレスモードで起動する
例)実行プログラム
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument("--headless=new")
driver = webdriver.Chrome(options=options)
driver.get("http://selenium.dev")
driver.quit()
結果)
なし
課題
今後、自動化プログラムを作ったときに運用上、下記の影響は出ないか調査をしてみる。
検証
他の作業をしながらバッチを起動できるか?(シングルタスクの操作にならないか)→ 別なchromeのブラウザが立ち上がるのでOK
ラズベリーパイなどのスペックは高くないPCでもスケジューラ登録して実行することが出来るか → 検証待ち
余談
CUI向けのプログラムをGUI化した方が効率よくなる場合もあると思う。CUIでコードを実行するための記述をすることなく、任意のタイミングでクリックできた方が時短になる場合もある。しかしながら、内部的にはブラウザが動いているのでCUIかと言われる少し不思議な感じにはなる。そのため、実はもっと基本的なWebアクセス、画面操作が出来ないのか考えたい。
プログラムは基本的なロジックとしてCUIベースの操作があり、そこからGUI化する流れの認識なのでまずはCUIベースでせめようと思う
参考
Headless is Going Away!
Chrome specific functionality
参考にしたブログ
おわり!