はじめに
ブラウザ操作の自動化に取り組むためにseleniumの環境構築をしたところちょっとつまづいたので備忘録として残します。環境構築で詰まってる人の参考になれば幸いです。
私の環境
- Macbook Pro 2020
- macOS Catalina 10.15.7
- Python 3.8.1
seleniumのインストール
まずは必要とされるパッケージのインストールをします。
pip3 install selenium
ドライバーのインストール
つづいてブラウザ固有のドライバーのインストールをします。
ここではGoogle Chromeのみ解説してますが、FireFoxでも同じようなやり方でダウンロードできると思われます。
(ちなみにFireFoxのドライバー名は"geckodriver"と言うらしいです)
[Google Chrome]
HomeBrewでインストールする場合
brew cask install chromedriver
実行できるかテスト
from selenium import webdriver
browser = webdriver.Chrome()
うまく実行できるかと思いきや以下のエラーが発生!
ブラウザも一瞬立ち上がって落ちた模様・・
python3
Python 3.8.1 (default, Feb 18 2020, 16:49:55)
[Clang 11.0.0 (clang-1100.0.33.17)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from selenium import webdriver
>>> browser = webdriver.Chrome()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/var/pyenv/versions/3.8.1/lib/python3.8/site-packages/selenium/webdriver/chrome/webdriver.py", line 76, in __init__
RemoteWebDriver.__init__(
File "/usr/local/var/pyenv/versions/3.8.1/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
self.start_session(capabilities, browser_profile)
File "/usr/local/var/pyenv/versions/3.8.1/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
File "/usr/local/var/pyenv/versions/3.8.1/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "/usr/local/var/pyenv/versions/3.8.1/lib/python3.8/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 81
どうやらChromeのバージョンとドライバーのバージョンをあわせないと行けないようです。
エラー原因の調査&設定変更
インストールしたドライバーはどうやらversion 81までしか対応していないようです。
ということでまずはChromeのバージョンを確認してみます。
アドレスバーに以下のように入力すると確認できます。
chrome://settings/help
最近アップデートしたので最新版がインストールされている模様(86.0.4240.80)
このChromeのバージョンにあったドライバーをダウンロードします。
以下からダウンロードできます。
https://chromedriver.chromium.org/downloads
zipファイルのため以下コマンドで解凍
unzip chromedriver_mac64.zip
または
tar -xvf chromedriver_mac64.zip
解凍すると以下のファイルができます。
chromedriver
このファイルをpip3と同じ階層に格納します。
pip3の階層は以下で確認できます
which pip3
/usr/local/var/pyenv/shims/pip3
which python3
/usr/local/var/pyenv/shims/python3
この'shims'というディレクトリに'chromedriver'を格納します
cd /usr/local/var/pyenv/shims
pwd
/usr/local/var/pyenv/shims
ls -l | grep chrome
-rwxr-xr-x@ 1 admin admin 15720316 10 18 21:04 chromedriver
格納できました。もう一度テストしてみます。
実行すると以下ポップアップが表示されました。せっかくダウンロードしたものを削除したくないので一旦キャンセルをクリック。
🍎→「システム環境設定」→「セキュリティとプライバシーポリシー」で許可する必要があります。
ちゃんとChromeが起動しました。テスト成功!!
おわりに
ひとまず環境構築が終了したのでseleniumをつかって日頃の作業の自動化にチャレンジしてみたいと思います。