目的
seleniumでChromeを使う場合、ChromeとChromedriverのバージョンを対応しているものにしないと不具合に繋がります。
今回はコンテナ内でChrome version 115 以降に対応したChromedriverの取得方法の備忘録になります。
仕様環境
Docker
Python 3.11
selenium 4.1.0
Chromeバージョン 120.0.6099.129
Chrome version 115 以降でのChrimedriverの選択
Chrimedriverのダウンロード先は以下の公式サイトより確認できます。
version 114以前とは別のサイトになりました。
https://googlechromelabs.github.io/chrome-for-testing/
2024/01/01時点での対応状況は以下のようになっています。
今回使用するChromeバージョンは「120.0.6099.129」ですが、まだ(uncoming)となっているため、時点で最新の「120.0.6099.109」を使います。
各プラットフォームに対応したドライバーがあるため、環境に合わせたものを選択してください。
今回はコンテナで環境を整えるため、以下の「linux64」を使います。
https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/120.0.6099.109/linux64/chromedriver-linux64.zip
Dockerfile
ここまでで使用するChrimedriverが選択できました。
ということでseleniumを動かすための環境を定義したdockerfileをどんっ。
FROM python:3.11
ARG FUNCTION_DIR="/my_function"
# ChromeとChromedriverのインストールに必要なパッケージをインストール
RUN apt-get update && apt-get install -y wget unzip
# Google Chromeの最新安定版をインストール
RUN wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
RUN dpkg -i google-chrome-stable_current_amd64.deb; apt-get -fy install
# Chromedriverをインストール
# 今回は「120.0.6099.109」を使用
RUN wget https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/120.0.6099.109/linux64/chromedriver-linux64.zip
RUN unzip chromedriver-linux64.zip
RUN mv chromedriver-linux64/chromedriver /usr/bin/chromedriver
RUN chown root:root /usr/bin/chromedriver
RUN chmod +x /usr/bin/chromedriver
# requirements.txtを使用して関数の依存関係をインストールする。
COPY requirements.txt .
RUN pip3 install -r requirements.txt --target ${FUNCTION_DIR}
COPY src ${FUNCTION_DIR}/src
適宜ほしいドライバーに合わせてUドライバーのRLを書き換えてください。
selenium==4.1.0
【参考】Chrome version 114 以前の場合との違い
version 114以前であればChrimedriverのダウンロード先はこちらになります。
・注意点としてchromedriverファイルの配置場所がversion 115前後で変更されていました。
こちらは適宜確認してみてください。
RUN mv chromedriver /usr/bin/chromedriver
RUN mv chromedriver-linux64/chromedriver /usr/bin/chromedriver
まとめ
最初ChromeとChromedriverのバージョンが対応していないせいで予期せぬエラーで沼ってしまっていました。
Chrome version によってダウンロード先やdockerfileの書き方が異なるため、それを知っていればもっと早く解決できたかと思います。
同じように沼っている人がいたら参考にしてください。