疑念は探究の動機であり、探究の唯一の目的は信念の確定である。

数学・論理学・哲学・語学のことを書きたいと思います。どんなことでも何かコメントいただけるとうれしいです。特に、勉学のことで間違いなどあったらご指摘いただけると幸いです。 よろしくお願いします。くりぃむのラジオを聴くこととパワポケ2と日向坂46が人生の唯一の楽しみです。

FirefoxでSeleniumを動かすと余計なログが出るので出ないようにする

概要
FirefoxSeleniumを実行するとgeckodriver.logというログファイルが作成される。そのようなログファイルが作成されないように設定する。

ソースコード

import os
import time
from selenium import webdriver

DRIVER_PATH = '/usr/local/bin/geckodriver'

driver = webdriver.Firefox(executable_path=DRIVER_PATH, service_log_path=os.path.devnull)
driver.get('https://www.google.com')

time.sleep(3)

driver.quit()


前提
とりあえずPythonSeleniumを実行できること。Seleniumがインストールされていること。



はじめに

FirefoxSeleniumを実行すると、ログが生じます。例えば、次のようなファイルを考えてみます。

import time
from selenium import webdriver

DRIVER_PATH = '/usr/local/bin/geckodriver'

driver = webdriver.Firefox(executable_path=DRIVER_PATH)
driver.get('https://www.google.com')

time.sleep(3)

driver.quit()
print('SUCCESS')

すると次のようになります。

$ ls
firefox_selenium.py
$ python firefox_selenium.py
SUCCESS
$ ls
firefox_selenium.py  geckodriver.log

この geckodriver.log が作成されないようにします。

解決策

driverの箇所を次のように修正すれば、ログは出ないようにします。

#### before
driver = webdriver.Firefox(executable_path=DRIVER_PATH)

#### after
import os
driver = webdriver.Firefox(executable_path=DRIVER_PATH, service_log_path=os.path.devnull)
  • 作成されるログを/dev/nullに捨てるという処理です。
  • /dev/nullは通常、不要な出力ファイルを捨てるのに使われます。いわばファイルの墓場です。

注意点

注意1: OSモジュールをインポートすること

os.path.devnullを使うためには標準モジュールのosをインポートする必要がありますので、忘れないようにしてください。

注意2: service_log_pathの代わりにlog_pathを使うと警告が出る

driverの引数をservice_log_pathの代わりにlog_pathと書くと警告が出ます(警告は出ますがログは出ません)。

#### no warning
driver = webdriver.Firefox(executable_path=DRIVER_PATH, service_log_path=os.path.devnull)

#### warning
driver = webdriver.Firefox(executable_path=DRIVER_PATH, log_path=os.path.devnull)


次のような警告が出ます。

$ ls
firefox_selenium.py
$ python firefox_selenium.py
/Users/xxxxxxxx/Desktop/firefox_selenium.py:xx: DeprecationWarning: use service_log_path instead of log_path
SUCCESS
$ ls
firefox_selenium.py


僕から以上