Skip to content

Chrome 129 Headlessモードで空白ウィンドウが表示される問題

問題の概要

Chromeブラウザをバージョン129に更新後、Headlessモードで実行すると予期しない空白のウィンドウが表示される現象が発生します。具体的な特徴は以下の通りです:

  • 発生条件

    • Windows環境でChrome 129を利用
    • Puppeteer、Selenium、Playwrightなどの自動化ツールを使用
    • Headlessモードで実行
  • 現象

    • ブラウザサイズと同一の空白の白いウィンドウが表示
    • スクリーンショットや操作には影響なし(機能は動作)
  • バージョン依存性

    ツールChrome 128Chrome 129Chrome 130
    Puppeteer (v23.4.0)正常異常正常
    Selenium (v4.0)正常異常正常
    Playwright (v1.47.1)正常異常正常

注意

この問題はWindows環境のみで発生します。macOSやLinuxでは同様の問題は確認されていません。

原因

Chromiumプロジェクトの公式バグレポート(Issue #367755364, Issue #359921643)で明らかになった原因は:

  • Chrome 129でHeadlessモードのデフォルト動作が変更
    • 旧モード(--headless=old)→ 新モード(--headless=new)へ移行
  • 新HeadlessモードのWindows実装に不具合が存在
  • 空白ウィンドウはレンダリングエラーではなくUI管理のバグ

解決方法

方法1: Chrome 130へアップデート(推奨)

根本的な解決策としてChrome 130以降へのバージョンアップを推奨します。バグ修正はChromiumのコミットで完了しており、Chrome 130で正常動作が確認されています。

bash
# Chromeのアップデート例(Windows)
winget upgrade Google.Chrome

方法2: ウィンドウを画面外に移動(暫定対策)

Chrome 129を継続利用する場合のWorkaround:

python
from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("--headless=new")
options.add_argument("--window-position=-2400,-2400")  # 画面外に移動

driver = webdriver.Chrome(options=options)
javascript
const browser = await puppeteer.launch({
  headless: 'new',
  args: ['--window-position=-2400,-2400']
});

技術解説

--window-position=-2400,-2400オプションは:

  • ウィンドウを画面の外側(見えない位置)に配置
  • 自動化処理自体には影響なし
  • 最小限のパフォーマンスオーバーヘッド

方法3: 旧Headlessモードを使用(非推奨)

旧モードへの切り戻し(--headless=old)でも一時的に回避可能ですが:

python
options.add_argument("--headless=old")

警告

--headless=oldは:

  • 近い将来廃止予定(Chromeのロードマップ
  • 新モード専用機能(デバイスエミュレーションなど)が利用不可
  • あくまで緊急回避策としてのみ推奨

恒久的な対策

  1. Chromeを130以降に更新(最優先)
  2. 自動化ツールのバージョン管理
    json
    "dependencies": {
      "puppeteer": "^22.0.0"  // Chrome130対応版を指定
    }
  3. CI環境でのブラウザバージョン固定
    yaml
    steps:
      - name: Set up Chrome
        uses: browser-actions/setup-chrome@v1
        with:
          chrome-version: 130.x

まとめ

対策有効性持続性推奨度
Chrome 130へ更新★★★★★
ウィンドウ位置調整★★★☆☆
旧Headlessモード使用★☆☆☆☆

この問題はChromiumの公式バグであり、Chrome 130で完全修正されています。Windows環境でのHeadless自動化では、Chromeバージョンの適切な管理が最も重要な対策です。

参考リソース