ストックドッグ

KatoTakahiro。金融系の会社で働くSEが株やPython、その他諸々について書いています。サービスも運営してます→http://fmbrain.work

seleniumで起きるエラー ~unknown error: unable to discover open pages~

発生エラー

selenium.common.exceptions.WebDriverException: Message: unknown error: unable to discover open pages

発生原因

stackoverflowにナイスな回答あり!

https://stackoverflow.com/questions/21001652/chrome-driver-error-using-selenium-unable-to-discover-open-pages


chromedriverのバージョン古くないか? ← まずこれを疑え

次は、google-chromeのバージョン古くないか? ← これも疑え

とのこと。

簡単な解決方法は、バージョンアップしよう、ってことになる。

バージョンアップしよう

chromedriver編

バージョンごとにインデックスされているので、目的のバージョンをインストールしよう。

http://chromedriver.storage.googleapis.com/index.html


最新版のバージョンはここから確認可能。

http://chromedriver.storage.googleapis.com/LATEST_RELEASE


2018/06/23時点での最新版は2.40なので、2.40をインストールする。

$ wget https://chromedriver.storage.googleapis.com/2.40/chromedriver_linux64.zip
$ unzip chromedriver_linux64.zip -d ~/bin/


起動するとバージョンが出てくるので、インストールできているかを確認する。

$ chromedriver

google-chrome

$ wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
$ sudo dpkg -i google-chrome-stable_current_amd64.deb
$ sudo apt-get update
$ sudo apt-get grade


最新版がインストールできているかを確認する。

$ google-chrome --version


最新版は、このサイトから確認できる。

https://www.whatismybrowser.com/guides/the-latest-version/chrome

なぜバージョンアップで解決できる?

seleniumがブラウザを自動制御するときには以下の構成になっている。

selenium >> chromedriver >> google-chrome

seleniumは直接は、ブラウザ(google-chrome)は制御できないので、chromedriverを介して制御する。

ユーザーによっては、googl-chromeFireFoxだったり。

このエラーは、chromedriverとgoogle-chromeのどちらかが古いことで起きる。

chromedriverのバージョンが古すぎると、google-chomeを制御できなし、その逆もしかり。

chrome-dirverには、サポートしているchromedriverのバージョンの幅も調べたら出てくるので、ちゃんと確認したければ、そこを確認する。

これでもまだ解決しないとき

chromedriverをダウングレードすると解決することが多い。

これに関しては、なぜかは不明。。。

現在最新版の2.40をインストールしてもエラーが解決できなかったため、順にダウングレードしていって2.38版でエラーなく動作するようになった。

$ wget https://chromedriver.storage.googleapis.com/2.39/chromedriver_linux64.zip

  ↓↓↓↓↓↓

$ wget https://chromedriver.storage.googleapis.com/2.38/chromedriver_linux64.zip

chromedriverは結構頻繁にバージョンが更新されているようで、こまめにバージョンを気にしないとバグのもとに...

まとめ

seleniumエラー多い。嫌い。

以上、終わり!