Pythonによるブラウザ自動化において、ウィンドウサイズの制御は単に見栄えを整えるだけでなく、スクリプトの安定性と再現性を確保するための極めて重要なプロセスです。
Webサイトの多くはレスポンシブデザインを採用しており、画面幅によって要素の配置や表示・非表示が切り替わるため、サイズ指定を怠ると「要素が見つからない」といったエラーの原因になります。
本記事では、2026年現在の最新ライブラリ仕様に基づき、Seleniumでのウィンドウサイズ最大化およびサイズ指定の最適な実装方法を詳しく解説します。
Seleniumでウィンドウサイズを制御する重要性
Seleniumを使用して自動テストやスクレイピングを行う際、ブラウザのウィンドウサイズを固定することは、実行環境に依存しない安定した動作を実現するために不可欠です。
例えば、開発者のローカル環境(高解像度モニター)では正常に動作するスクリプトが、CI/CDツール(GitHub Actionsなど)の仮想環境上では画面サイズが小さいためにエラーになるケースが多々あります。
これは、特定のボタンが画面外に隠れてしまったり、モバイル用のハンバーガーメニューに変化してしまったりすることが原因です。
また、スクリーンショットをエビデンスとして保存する場合も、サイズを一貫させることで比較や確認が容易になります。
2026年現在のWebフロントエンド開発では、デバイスごとの表示切り替えがより複雑化しているため、Selenium側での厳密なサイズ制御がより一層求められています。
ウィンドウを最大化する方法
ブラウザを起動した直後に、画面いっぱいに表示を広げる方法は主に2つあります。
状況に応じて使い分ける必要がありますが、一般的にはOptionsクラスを利用する方法が推奨されます。
driver.maximize_window() を使用する
ブラウザのインスタンスを作成した後に、メソッドを呼び出して最大化する方法です。
最も直感的で分かりやすい記述法です。
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
# WebDriverのセットアップ
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
# ウィンドウを最大化
driver.maximize_window()
# 任意のページへアクセス
driver.get("https://example.com")
# 処理終了後に閉じる
# driver.quit()
このメソッドは、実行された瞬間にOSの標準的な機能を使ってウィンドウを最大化します。
手軽ではありますが、ブラウザが立ち上がってから最大化されるまでにタイムラグが生じるため、その一瞬の間に要素の読み込みが始まるとレイアウトの再計算が発生し、稀に動作が不安定になることがあります。
Optionsの引数で最大化を指定する
ブラウザ起動時の引数(Arguments)として最大化を指定する方法です。
2026年現在の主流はこの手法です。
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# Chrome用のオプション設定
options = Options()
options.add_argument('--start-maximized')
# オプションを適用してブラウザを起動
driver = webdriver.Chrome(options=options)
driver.get("https://example.com")
この方法のメリットは、ブラウザが立ち上がった瞬間から最大化状態で起動する点にあります。
無駄なウィンドウのリサイズ処理が走らないため、描画パフォーマンスが向上し、スクリプトの実行速度も安定します。
任意のサイズを数値で指定する方法
特定の解像度(1920×1080など)でテストを行いたい場合や、スマホサイトの表示を確認したい場合には、数値を直接指定します。
driver.set_window_size() を使用する
プログラムの途中で動的にサイズを変更したい場合に適しています。
from selenium import webdriver
driver = webdriver.Chrome()
# 幅1280、高さ720に設定
driver.set_window_size(1280, 720)
driver.get("https://example.com")
このメソッドを使用すると、実行時にウィンドウの枠を含めたサイズが変更されます。
特定の操作をした後にサイズを切り替えて、レスポンシブ表示の崩れを確認するテストなどに役立ちます。
Optionsの引数でサイズを指定する
起動時から特定のサイズで固定したい場合に非常に有効です。
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
# 幅,高さ の形式で指定
options.add_argument('--window-size=1920,1080')
driver = webdriver.Chrome(options=options)
driver.get("https://example.com")
この設定は、次に説明する「ヘッドレスモード」を利用する際に必須とも言えるテクニックです。
ヘッドレスモードにおけるサイズ指定の注意点
サーバー上やバックグラウンドでブラウザを動かす「ヘッドレスモード」では、maximize_window() が期待通りに動作しないケースがあります。
ヘッドレス環境には物理的なディスプレイ概念がないため、「最大」がどの程度なのかをブラウザが判断できないからです。
ヘッドレスモードでの推奨設定
2026年現在のSelenium 4以降の環境では、ヘッドレスモードでもウィンドウサイズを明示的に指定することが強く推奨されています。
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
# ヘッドレスモードを有効化
options.add_argument('--headless=new')
# 仮想的な画面サイズを指定(重要)
options.add_argument('--window-size=1920,1080')
driver = webdriver.Chrome(options=options)
driver.get("https://www.google.com")
# 現在のサイズを確認
print(driver.get_window_size())
driver.quit()
{'width': 1920, 'height': 1080}
ヘッドレスモードでサイズを指定しない場合、デフォルトでは 800×600 などの小さなサイズで起動することがあります。
これにより、通常表示されているはずのメニューが消えたり、要素が重なったりしてエラーを引き起こします。
そのため、ヘッドレスとサイズ指定(–window-size)は常にセットで運用するのがベストプラクティスです。
ウィンドウサイズと位置の取得
現在のウィンドウ情報を取得して、ログに出力したり条件分岐に使用したりすることも可能です。
サイズと座標の取得
| メソッド | 取得できる内容 |
|---|---|
driver.get_window_size() | ウィンドウの幅(width)と高さ(height)を辞書形式で取得 |
driver.get_window_position() | ウィンドウの左上隅のX座標とY座標を取得 |
driver.get_window_rect() | サイズと座標の両方を一括で取得 |
from selenium import webdriver
driver = webdriver.Chrome()
driver.set_window_size(1024, 768)
# サイズ情報の取得
size = driver.get_window_size()
w = size.get('width')
h = size.get('height')
print(f"現在のサイズ: 幅 {w}px, 高さ {h}px")
# 座標の取得
pos = driver.get_window_position()
print(f"現在の位置: X={pos.get('x')}, Y={pos.get('y')}")
driver.quit()
現在のサイズ: 幅 1024px, 高さ 768px
現在の位置: X=10, Y=10
2026年現在のベストプラクティス:Options一括管理
複数の設定を組み合わせる際、コードを簡潔に保つためにOptionsクラスに集約する方法を推奨します。
以下は、安定性を重視したブラウザ起動設定のテンプレートです。
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
def setup_driver(headless=False):
options = Options()
if headless:
options.add_argument('--headless=new')
# 常に推奨解像度で起動
options.add_argument('--window-size=1920,1080')
# サンドボックス解除(Linux環境等の安定化用)
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
# ドライバの初期化
service = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service, options=options)
return driver
# 利用例
driver = setup_driver(headless=True)
driver.get("https://example.com")
print(f"Title: {driver.title}")
driver.quit()
なぜこの構成が良いのか
- 可搬性: Windows、Mac、Linux(Docker)のどの環境でも、同じウィンドウサイズでブラウザが起動します。
- メンテナンス性: 引数
headlessを切り替えるだけで、デバッグ(有頭)と本番実行(無頭)をスムーズに切り替えられます。 - 高速化: 起動時の引数でサイズを決めるため、リサイズにかかるオーバーヘッドがなくなります。
高DPIディスプレイ(Retinaなど)での注意点
2026年現在、高精細なディスプレイを使用する開発者が増えています。
Seleniumで set\_window\_size(1000, 1000) と指定しても、OS側のスケーリング設定(例:150%拡大)が影響し、実際に描画されるピクセル数とSeleniumが認識するサイズに乖離が生じる場合があります。
これを防ぐには、以下の引数を追加してデバイスピクセル比を固定する方法が有効な場合があります。
options.add_argument('--force-device-scale-factor=1')
これにより、OSの設定に左右されず、標準的な解像度でブラウザを操作できるようになります。
特に、画像比較テスト(ビジュアルリグレッションテスト)を行う際には必須の設定です。
まとめ
PythonのSeleniumにおいて、ウィンドウサイズの制御は自動化の成否を分ける基盤技術です。
- 最大化したい場合は、起動オプションの
--start-maximizedを使用する。 - 特定のサイズに固定したい場合は、
--window-size=幅,高さを使用する。 - ヘッドレスモードでは必ずサイズを明示的に指定し、レイアウト崩れを防ぐ。
- 動的なリサイズが必要な場合のみ
driver.set_window_size()を検討する。
これらの最新設定を適切に組み合わせることで、実行環境に左右されない、堅牢で信頼性の高いブラウザ自動化スクリプトを構築することができます。
2026年のモダンな開発環境に合わせて、引数ベースでのサイズ管理を標準化していきましょう。
