Pythonを使用したブラウザ自動化のデファクトスタンダードであるSeleniumは、2026年現在も進化を続けています。
かつてはブラウザごとの実行ファイルである「WebDriver」を手動でダウンロードし、パスを通す作業が必須でしたが、現在のSelenium 4以降ではSelenium Managerが標準搭載されており、セットアップの工程が大幅に簡略化されました。
本記事では、Google Chrome、Microsoft Edge、Mozilla Firefoxの主要3ブラウザを起動するための最新の手順と、実務で欠かせないOptions設定について詳しく解説します。
Seleniumを利用するための準備
Seleniumを動かすための環境構築は、現代のPython環境においては非常にシンプルです。
まず、ライブラリ本体をインストールする必要があります。
ターミナル(またはコマンドプロンプト)を開き、以下のコマンドを実行してください。
pip install selenium
2026年現在の環境では、ブラウザのバージョンに合わせて手動でドライバーを管理する必要はほとんどありません。
Seleniumが実行時に適切なドライバーを自動的に取得してくれるため、開発者はブラウザ本体がインストールされていることだけを確認すれば準備完了です。
また、各ブラウザを制御する際には、それぞれのブラウザ専用の「Options」クラスを利用します。
これにより、ヘッドレスモード(画面非表示)での実行や、ユーザーエージェントの設定、ウィンドウサイズの指定などが可能になります。
Google Chromeを起動する方法
Google Chromeは世界で最も利用されているブラウザであり、Seleniumでの自動化においても第一選択肢となります。
Chromeを起動するには、webdriver.Chrome()を使用します。
基本的な起動コード
最もシンプルな起動手順は以下の通りです。
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
# Chromeのオプションを設定
options = Options()
# ブラウザを最大化した状態で起動
options.add_argument("--start-maximized")
# WebDriverの初期化
driver = webdriver.Chrome(options=options)
# 任意のサイトにアクセス
driver.get("https://www.google.com")
# ページタイトルを出力
print(f"ページタイトル: {driver.title}")
# ブラウザを閉じる
driver.quit()
ページタイトル: Google
Chromeでよく使われるOptions設定
Chromeの挙動をカスタマイズするために、add_argumentメソッドを使用して様々な設定を追加できます。
実務で多用される主要な設定を以下の表にまとめました。
| 設定項目 | 引数名 | 説明 |
|---|---|---|
| ヘッドレスモード | --headless=new | 画面を表示せずにバックグラウンドで実行します。 |
| シークレットモード | --incognito | 閲覧履歴やCookieを残さずに起動します。 |
| GPU無効化 | --disable-gpu | グラフィック処理を無効にし、リソース消費を抑えます。 |
| サンドボックス無効 | --no-sandbox | Linux環境(Docker等)で実行する際に推奨されます。 |
| ユーザーエージェント | --user-agent=VALUE | ブラウザの識別情報を任意の値に変更します。 |
例えば、サーバー上で実行する場合や、定期的なスクレイピングを行う場合には、リソースを節約するためにヘッドレスモードを有効にするのが一般的です。
Microsoft Edgeを起動する方法
Microsoft Edgeは現在Chromiumエンジンを採用しているため、基本的な操作感はChromeと非常に似ています。
しかし、専用のEdgeOptionsを使用する必要がある点に注意してください。
Edgeの起動コード
from selenium import webdriver
from selenium.webdriver.edge.service import Service
from selenium.webdriver.edge.options import Options
# Edgeのオプションを設定
edge_options = Options()
# インコグニッ(インプロベート)モードで起動
edge_options.add_argument("-inprivate")
# WebDriverの初期化
driver = webdriver.Edge(options=edge_options)
driver.get("https://www.bing.com")
print(f"アクセス成功: {driver.current_url}")
driver.quit()
Edge特有の注意点
Edgeでは、独自の機能としてIEモード(Internet Explorerモード)の制御も可能ですが、通常のWebスクレイピングであれば上記のようなChromiumベースの設定で十分です。
Chromeと同じ引数の多くがそのまま利用可能ですが、シークレットモードの引数が-inprivateであるなど、一部異なる名称を持つものがあります。
Mozilla Firefoxを起動する方法
FirefoxはChromium系とは異なる独自のレンダリングエンジン(Gecko)を使用しています。
そのため、設定方法やオプションの指定形式がChrome/Edgeとは少し異なります。
Firefoxの起動コード
from selenium import webdriver
from selenium.webdriver.firefox.service import Service
from selenium.webdriver.firefox.options import Options
# Firefoxのオプションを設定
firefox_options = Options()
# ヘッドレスモードの設定(Firefox専用の指定方法)
firefox_options.add_argument("-headless")
# WebDriverの初期化
driver = webdriver.Firefox(options=firefox_options)
driver.get("https://www.mozilla.org")
print(f"Firefoxでアクセス中: {driver.title}")
driver.quit()
FirefoxOptionsの詳細
Firefoxでは、ブラウザの基本設定(about:config)で変更できるような細かな挙動を、set_preferenceメソッドを使って制御できるのが特徴です。
# 画像の読み込みを無効にして高速化する設定
firefox_options.set_preference("permissions.default.image", 2)
このように、ブラウザの内部設定まで踏み込んでカスタマイズしたい場合には、Firefoxが非常に強力な選択肢となります。
各ブラウザ共通の高度なOptions設定
ブラウザを起動する際、単純にURLを開くだけでなく、安定した自動操作を行うための共通設定がいくつか存在します。
これらはどのブラウザでも概念は共通していますが、今回はChromeを例に解説します。
1. ウィンドウサイズの固定
レスポンシブデザインのサイトを操作する場合、ウィンドウサイズによって要素の配置が変わることがあります。
これを防ぐために、起動時にサイズを明示的に指定するのがベストプラクティスです。
options.add_argument("--window-size=1920,1080")
2. 起動時のバイナリ指定
テスト環境や特定の古いバージョンを使用したい場合、ブラウザの実行ファイル(.exeなど)の場所を直接指定することができます。
options.binary_location = "/path/to/specific/chrome/binary"
3. WebDriverのパスを明示する場合
通常はSelenium Managerが自動で解決しますが、社内プロキシの関係などで自動ダウンロードができない場合は、手動でダウンロードしたドライバーのパスをServiceオブジェクト経由で渡します。
from selenium.webdriver.chrome.service import Service
service = Service(executable_path="/usr/local/bin/chromedriver")
driver = webdriver.Chrome(service=service, options=options)
実務で役立つ待機処理の実装
ブラウザを起動した直後、ページが完全に読み込まれる前に要素を操作しようとするとエラーが発生します。
Selenium 4以降では、起動設定の一部として「待機戦略」を意識することが極めて重要です。
暗黙的な待機(Implicit Wait)
ドライバーのインスタンスに対して一度設定すれば、要素が見つかるまで最大で指定した秒数待機してくれます。
driver = webdriver.Chrome(options=options)
# 最大10秒間、要素が現れるのを待つ
driver.implicitly_wait(10)
明示的な待機(Explicit Wait)
特定のボタンが表示されるまで待つ、といった複雑な条件を指定する場合は、WebDriverWaitを使用します。
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 特定のIDを持つ要素が表示されるまで最大15秒待機
element = WebDriverWait(driver, 15).until(
EC.presence_of_element_located((By.ID, "submit-button"))
)
エラーを防ぐための終了処理
Seleniumを起動したままにすると、PCのリソース(メモリやCPU)を激しく消費します。
プログラムが途中でエラーになっても確実にブラウザを閉じるために、try...finally構文を使用するのが一般的です。
try:
driver = webdriver.Chrome(options=options)
driver.get("https://example.com")
# メインの処理
finally:
# 成功しても失敗しても必ず実行
driver.quit()
driver.close()は現在のタブを閉じるだけですが、driver.quit()はブラウザプロセスそのものを完全に終了させます。
メモリリークを防ぐため、必ずquit()を使用するようにしましょう。
まとめ
2026年現在のSeleniumにおけるブラウザ起動手順は、かつての煩雑なドライバー管理から解放され、非常にスマートなものへと進化しました。
Optionsクラスを使いこなすことで、Chrome、Edge、Firefoxそれぞれの特性を活かした自動化が可能です。
今回のポイントを振り返ります。
- Selenium Managerにより、ドライバーのパス指定は原則不要になった。
Optionsクラスを使用して、ヘッドレスモードやウィンドウサイズを適切に設定する。- ブラウザごとに引数の書き方が微妙に異なる(特にFirefox)。
- 安定した運用のために、待機処理(Wait)と終了処理(quit)をセットで実装する。
これらの手順をマスターすることで、環境に左右されない堅牢なブラウザ自動化システムを構築できるようになります。
まずは自身のプロジェクトに最適なブラウザを選び、最新のOptions設定を反映させてみてください。
