1.やりたいこと
Seleniumで処理をした後に手作業でブラウザ操作をしたいと思っても、通常は処理終了時にブラウザが閉じてしまいます。
Chromeを閉じずに、処理だけ終わらせる方法を書いていきます。
2.対応方法
webdriverを立ち上げた際に、chromedriverのプロセスが立ち上がります。
このプロセスIDに終了シグナルを送れば、pythonの処理は終了したまま、chromeを開いたままにできます。
webdriverのプロセスIDはWebdriverオブジェクトから参照します。
(下記はChromedriverの場合)
from selenium import webdriver
import os
import signal
driver = webdriver.Chrome()
try:
# ~いろいろな処理~
finally:
os.kill(driver.service.process.pid,signal.SIGTERM)
例外発生して終了するとプロセスが残ってしまうため、finallyの中に入れて必ず終了させるようにしています。
VSCodeだとデバッグで走らせるとChromeが閉じてしまうことがありますが、コマンドラインから実行すると閉じずに残っているのがわかるかと思います。
3.備考
Chromedriverにdetachオプションを与える対応方法もありますが、コンソール画面が残ってしまったりと使い勝手があまりよくないので、なんだかんだで上記方法がよさそうでした。
参考:https://teratail.com/questions/253512