SeleniumでスクレイピングやE2Eテストを回していると、ある日突然「ChromeDriverが合わない…」で止まることがあります😇
でも Selenium 4.6以降なら、もう“ChromeDriverを手で落として管理する時代”は終わりです✨
Selenium Managerがドライバ管理を自動化してくれるので、コードも運用もスッキリします。
障害あるある:旧来のChromeDriver管理で詰む😵💫
よく出る症状(例)⚠️
OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません。が出るChromeDriverManager().install()周りで急に動かなくなった- 環境更新(Chrome更新 / Windows更新)後に崩壊する
実際、Seleniumの仕様変更や周辺ツールの挙動差で、過去に動いていた書き方が急に不安定化するケースがあります。
結論:Selenium 4.6以降は「driver = webdriver.Chrome()」で自動管理✅
Selenium 4.6で Selenium Managerが導入され、ブラウザドライバの自動取得・管理が標準機能になりました。
Selenium Managerとは?🧰(ざっくり理解でOK)
- Seleniumに同梱される仕組みで、必要なドライバを自動で用意してくれます
- つまり、ChromeDriverを自分で探して配置してパス通して…が不要になります✨
旧方式 vs 新方式 早見表📌
| 項目 | 旧方式(手動/外部マネージャ) | 新方式(Selenium Manager) |
|---|---|---|
| ドライバの準備 | 自前でDL/更新が必要 | 自動で取得・管理 |
| コードの複雑さ | Service指定などが増える | webdriver.Chrome()でOK |
| 更新耐性 | 環境更新で壊れがち | 追従しやすい(運用ラク) |
| トラブル原因 | キャッシュ破損・ミスマッチ等 | ネットワーク/権限の影響が中心 |
実装編:最短で動かす手順🧪
前提条件をそろえる✅
- Selenium:4.6以上(できれば最新版へ)
- Chrome(またはEdge/Firefox)がインストール済み
アップデートコマンド(例)⬆️
pip install -U selenium
基本(最短)コード✨
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://example.com")
これで ChromeDriverの用意を自動化できます。
ヘッドレス実行もいつも通りOK👻
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument("--headless=new")
driver = webdriver.Chrome(options=options)
driver.get("https://example.com")
「オプションを足すときは add_argument() を積む」だけでOKです👍(挙動方針は基本同じ)
トラブルシュート:まだ動かないときのチェックリスト🔧
1) WinError 193 が出る(webdriver_manager利用時に多い)⚠️
このエラーは「違う形式のファイルを実行しようとしている」「キャッシュが壊れている」などで起きがちです。
対策はシンプルで、webdriver_manager依存を外してSelenium Managerへ寄せるのが安定です。
それでもwebdriver_managerを使い続けたい場合の応急処置🧹
キャッシュ削除で直る例も報告されています(例:.wdm 配下の削除)。
2) Driverが見つからない系エラー🚨
「ドライバが見つからない」系は、Seleniumの公式トラブルシュートが整理されています。
まずは **Seleniumがドライバを見つける経路(自動/手動)**のどこで止まっているかを切り分けるのが近道です。
3) 社内ネットワーク/プロキシで落ちる🌐
Selenium Managerは必要に応じて取得処理が走るため、ネットワーク制限がある環境だと失敗することがあります。
その場合は プロキシ設定・許可リスト・実行ユーザー権限を疑うと復旧が早いです(CI/CDやVDIでも同様)🧩
運用のコツ:長期で壊れにくくする✅
Seleniumは「標準機能寄せ」が最強💪
外部ドライバ管理を減らし、Seleniumの標準(Selenium Manager)へ寄せるほど、
環境更新での事故率が下がり、保守コストが落ちます✨
CIでもローカルでも同じ書き方に統一🎯
- 開発PCだけ動く、が消える
- 共有コードの再現性が上がる
- 引き継ぎがラクになる
結果として「止まらない自動化」が作れます🏃♂️💨
FAQ(よくある質問)🙋♀️🙋♂️
Q1. Selenium 4.6未満だとどうなる?🤔
A. Selenium Manager前提の自動管理が効きにくいので、ドライバ管理で詰まりやすいです。まずはSeleniumを4.6以上へ更新がおすすめです⬆️
Q2. webdriver.Chrome() だけで本当にChromeDriver要らないの?😳
A. “自分で用意する必要がない”という意味でOKです。Seleniumの仕組みが必要に応じてドライバ管理をしてくれます🧰
Q3. それでも動かない時、最初に見るべきポイントは?🔍
A. ①Seleniumのバージョン、②ネットワーク(プロキシ/遮断)、③権限(実行ユーザー)を上から順に見ると早いです✅
Q4. WinError 193 の一発解決は?🧯
A. webdriver_manager依存を外して Selenium Manager運用へ切替が最も安定しやすいです(応急処置としてキャッシュ削除で直る例もあります)🧹
Q5. ヘッドレスやオプション指定は今まで通り?👻
A. はい、ChromeOptions() に add_argument() を追加していけばOKです✨
まとめ:ドライバ管理で消耗しない自動化へ🌈
Selenium 4.6以降なら、**ChromeDriver運用の悩みを“仕組みで消す”**のが正解です✅
コードもシンプルに統一できて、トラブル対応の時間が激減します⌛✨
📦おすすめ教材・環境整備アイテム
- Python基礎〜自動化の定番書📘
- Selenium/テスト自動化の入門書🧪
- スクレイピング運用入門書☁️
- 例外処理・ログ設計が学べる教材🧰


コメント