seleniumで起きるエラー ~unknown error: unable to discover open pages~
発生エラー
selenium.common.exceptions.WebDriverException: Message: unknown error: unable to discover open pages
発生原因
stackoverflowにナイスな回答あり!
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-chromeはFireFoxだったり。
このエラーは、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は結構頻繁にバージョンが更新されているようで、こまめにバージョンを気にしないとバグのもとに...