目次
概要
PythonのSeleniumライブラリを使用して、Google Chrome、Edge、Firefox、Safariなどの主要ブラウザをプログラムから起動する方法を解説します。
また、ブラウザ操作終了時にプロセスを残さないための正しい終了メソッド(quit)の使い方と、特定のタブのみを閉じる(close)との違いについても整理します。
仕様(入出力)
- 入力: なし(スクリプト実行のみ)
- 出力:
- 指定したWebブラウザのウィンドウが起動する
- 処理完了後にブラウザが閉じる
- 前提:
seleniumライブラリがインストールされていること。- 操作対象のブラウザ本体がPCにインストールされていること。
基本の使い方
最も標準的なChromeブラウザを起動し、3秒後に終了するコードです。
from selenium import webdriver
import time
# Chromeブラウザを起動
driver = webdriver.Chrome()
# 起動確認のために3秒待機
time.sleep(3)
# ブラウザを完全に終了(必須)
driver.quit()
コード全文
エラーが発生しても必ずブラウザが閉じるように try…finally 構文を使用した安全な実装例です。
主要4ブラウザの起動コードを記述しています(使用しないものはコメントアウトしています)。
from selenium import webdriver
import time
def launch_browser_safely():
"""
ブラウザを起動し、安全に終了させるデモ関数です。
"""
driver = None
try:
print("ブラウザを起動します...")
# --- ブラウザの選択(環境に合わせてコメント解除してください) ---
# 1. Google Chrome
driver = webdriver.Chrome()
# 2. Microsoft Edge
# driver = webdriver.Edge()
# 3. Mozilla Firefox
# driver = webdriver.Firefox()
# 4. Apple Safari (macOSのみ)
# driver = webdriver.Safari()
print(f"起動成功: {driver.name}")
# 何か処理を行う(例: Googleを開く)
driver.get("https://www.google.com")
time.sleep(3) # 確認用待機
except Exception as e:
print(f"エラーが発生しました: {e}")
finally:
# エラーの有無に関わらず、必ずブラウザを閉じる
if driver:
print("ブラウザを終了します。")
driver.quit()
if __name__ == "__main__":
launch_browser_safely()
カスタムポイント
終了メソッドの使い分け
Seleniumにはブラウザを閉じるメソッドが2種類あります。通常は quit() を使用してください。
| メソッド | 動作 | 用途 |
driver.quit() | 全終了 | すべてのウィンドウ・タブを閉じ、WebDriverのプロセス(セッション)を破棄します。プログラムの最後で必ず呼びます。 |
driver.close() | タブ閉じる | 現在フォーカスしているタブ(ウィンドウ)だけを閉じます。プロセスは継続します。 |
各ブラウザの対応クラス
起動したいブラウザに応じて、webdriver モジュールのクラスを使い分けます。
webdriver.Chrome()webdriver.Edge()webdriver.Firefox()webdriver.Safari()
注意点
- プロセスの残留
driver.quit()を書き忘れたり、エラーでquit()まで到達しなかった場合、ブラウザのプロセスやドライバのプロセス(chromedriver.exe等)がバックグラウンドに残り続け、メモリを圧迫します。- 必ず
try...finallyブロックを使用し、finally節でquit()を実行してください。
- Safariの利用設定
- macOSでSafariを操作する場合、事前にSafariのメニューバーから「開発」→「リモートオートメーションを許可」にチェックを入れる必要があります。
- 初期ロードの待機
- ブラウザ起動直後は重いため、すぐに操作(クリック等)を行おうとすると失敗することがあります。ページのロード完了を待つロジックを入れるのが定石です。
応用
Pythonの with ステートメントを使って、quit() を明示的に書かずに自動終了させるテクニックです。
(Selenium自体は標準でコンテキストマネージャに対応していませんが、簡単なラッパーを作ることで実現できます)
from selenium import webdriver
from contextlib import contextmanager
@contextmanager
def managed_chrome():
"""Chromeドライバの起動と終了を管理するコンテキストマネージャ"""
driver = webdriver.Chrome()
try:
yield driver
finally:
driver.quit()
if __name__ == "__main__":
# withブロックを抜けると自動的に quit() が呼ばれます
with managed_chrome() as driver:
driver.get("https://www.google.com")
print(driver.title)
# ここで処理終了、自動で閉じる
まとめ
Seleniumを使ったブラウザ操作の第一歩は、正しい「起動」と「終了」です。
特に driver.quit() は自動化におけるマナーのようなものです。エラー時も含めて確実に終了処理が走るようにコードを構成してください。
