IT系技術ブログ

【Selenium】最新バージョンでwebdriverが取得できないエラーの対処法

webdriver-manager-3.9.1がリリースされ、
アップデートすることで解決するようになりました。

Pythonでseleniumwebdriver_managerを利用した自動操作プログラムにて

以下のエラーが発生するようになりました。

ValueError: There is no such driver by url https://chromedriver.storage.googleapis.com/115.0.5790/chromedriver_win32.zip

上記のエラーを解消するための対応方法を紹介します。

環境

・Windows 11 Pro

・Chrome バージョン: 115.0.5790.99(Official Build) (64 ビット)

・Python 3.9.5 64-bit

・webdriver-manager-3.8.5

エラーの原因

ValueError: There is no such driver by url https://chromedriver.storage.googleapis.com/115.0.5790/chromedriver_win32.zip

上記のエラーが発生している場合、以下のようにエラーとなります。

1.chrome driverを自動で取得してくれるwebdriver managerが、

  PCのChromeのバージョンを判定し「115.0.5790」のchrome driverを

  ダウンロードしようとします。

2.リンク先の「https://chromedriver.storage.googleapis.com/」にまだ

  最新版のchrome driverの設定が行われておらず、

  ダウンロードする際にエラーとなります。

※マイナーバージョンアップではすぐに更新されるようですが、

 今回「114→115」へのバージョンアップだったため、対応が普段より遅いようです。

対処方法1

Chrome Driverのダウンロード

1.エクスプローラーにて「%USERPROFILE%.wdm\drivers\chromedriver\win32」を開きます。

2.「https://googlechromelabs.github.io/chrome-for-testing/」にアクセスします。

3.環境に対応したバージョンのdriverをダウンロードします。

例:今回はChromeのバージョンが「115.0.5790」のため、

「https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/115.0.5790.98/win64/chromedriver-win64.zip」をダウンロードします。

4.ダウンロードしたファイルを「%USERPROFILE%.wdm\drivers\chromedriver\win32」に解凍します。

5.解凍したフォルダ名を「115.0.5790」に変更します。

driver.jsonの設定

1.エクスプローラーにて「%USERPROFILE%.wdm」を開きます。

2.「%USERPROFILE%.wdm」にある「drivers.json」をテキストエディタで開きます。

3.以下のように設定情報を追加します。

{
    "win32_chromedriver_114.0.5735_for_114.0.5735": {
        "timestamp": "20/07/2023",
        "binary_path": "C:\\Users\\user\\.wdm\\drivers\\chromedriver\\win32\\114.0.5735\\chromedriver.exe"
    },
    "win32_chromedriver_115.0.5790_for_115.0.5790": {
        "timestamp": "20/07/2023",
        "binary_path": "C:\\Users\\user\\.wdm\\drivers\\chromedriver\\win32\\115.0.5790\\chromedriver.exe"
    }
}

※直前のバージョンをコピペし、「115.0.5790」用の設定を記述します。

※「"binary_path": "C:\\Users\\user~~」の部分は各環境に合わせてください。

※「“timestamp”: “20/07/2023”,」の日付が実行日より過去日だとダウンロードする判定となるようです。そのため「“timestamp”: “20/07/2099”,」のように未来日にしておけばダウンロードされません。

4.上記の設定を行うことで、webdriver managerが最新のdriverが入っていると判定するようになり、

ダウンロードでエラーが発生することなくseleniumを起動できます。

対処方法2

1.Chromeのバージョンをダウングレードします。

Chrome のバージョンをダウングレードする(Windows)

Chrome Enterprise and Education ヘルプ

2.Chromeの自動アップデートを停止します。

Google Chrome のアップデートを停止する方法

find366

※今後も同様の事象が発生することを考えると、

 可能であれば自動アップデートを停止したほうがいいかもしれません。

対処方法3

プログラムのソースを自分で編集が出来るのであればこの方法がオススメです。

try:
    // 自動でPCのChromeと同じバージョンのdriverをインストールする処理
    self.driver = webdriver.Chrome(ChromeDriverManager().install(),options=options)
except:
    // 例外発生時、配布されているもののうち最新のdriverをインストールする処理
    res = requests.get('https://chromedriver.storage.googleapis.com/LATEST_RELEASE')
    self.driver = webdriver.Chrome(ChromeDriverManager(res.text).install(),options=options)

参考

モバイルバージョンを終了