Chrome 127での検索エンジン選択画面によるSeleniumエラー解決法
問題
Chrome バージョン127への更新後、Seleniumによる自動テストスクリプトの実行でエラーが発生します。エラーの原因は、ブラウザ起動時に必ず表示される「デフォルト検索エンジンを選択」画面です。この画面が表示されることで、Seleniumによるブラウザ操作がブロックされ、スクリプトが正常に続行できなくなります。主な発生環境は:
- Chrome バージョン127以上
- ChromeDriver 127.0.6533.72以降
- 新しいChromeプロファイルを使用する場合
- テスト実行時にプロファイルデータがリセットされる設定
この問題は新しいChromeの機能「検索エンジン選択画面」が自動化フローと干渉するために発生します。
解決策
--disable-search-engine-choice-screen
Chromeオプションを追加し、検索エンジン選択画面を無効化します。以下に言語/フレームワーク別の実装方法を示します:
Python実装例(Selenium標準)
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("--disable-search-engine-choice-screen") # 重要オプション
chrome_options.add_argument("--start-maximized") # 任意オプション
driver = webdriver.Chrome(options=chrome_options) # オプション適用
driver.get("https://example.com") # 以降のテストコード
Webdriver.IO / Protractor での設定例
// wdio.conf.js 設定例
exports.config = {
capabilities: [{
browserName: 'chrome',
'goog:chromeOptions': {
args: [
'--disable-search-engine-choice-screen' // 選択画面を無効化
// 他の必要なオプション
]
}
}],
// その他の設定...
};
Java実装例
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
public class ChromeTest {
public static void main(String[] args) {
ChromeOptions options = new ChromeOptions();
options.addArguments("--disable-search-engine-choice-screen");
WebDriver driver = new ChromeDriver(options);
driver.get("https://example.com");
// 以降のテスト処理...
}
}
補足説明
オプションの動作原理
--disable-search-engine-choice-screen
フラグは:
- Chrome初期起動時の検索エンジン選択画面を無効化
- 既存設定(プロファイル内の検索エンジン設定)を継承
- 規制対応で追加されたEUユーザー機能を無効化
追加注意点
- プロファイル固定化:テスト安定化のためユーザーデータディレクトリを固定推奨
chrome_options.add_argument("--user-data-dir=/path/to/profile")
- ブラウザ更新対応:ChromeOptionsはバージョン毎に調整が必要
- 代替フラグ検証(将来的な変更に備えた対策):python
chrome_options.add_argument("--no-default-search-provider-check")
検索エンジン選択動作の背景
Chrome 127での変更は、EUデジタルマーケティング法(DMA)準拠のため導入されました:
- EU圏ユーザー向けの必須機能
- 検索エンジン選択画面が初回起動時に強制表示
- 自動テスト環境では予期せぬ中断を発生させる
問題再発防止策
- ドライバーバージョンチェックの徹底
assert driver.capabilities['browserVersion'].startswith('127'), "非対応バージョン"
- ブラウザオプション設定の集約管理:
# オプション管理モジュール
def get_chrome_options():
options = Options()
options.add_argument("--disable-search-engine-choice-screen")
# 共通オプション追加
return options
まとめ
Chromeバージョン127以降のSeleniumテストでは--disable-search-engine-choice-screen
オプションの追加が必須です。導入後は以下の効果が期待できます:
- 検索エンジン選択画面によるテスト中断の排除
- EU規制対応機能と自動化の互換性確保
- Chrome更新に伴うテスト不安定性の解消
上記コード例を適用し、Seleniumテストの継続的な安定動作を実現してください。