Docker ContainerにChromeをインストールする
Oct 23, 2022 09:00 · 944 words · 2 minute read
Docker ContainerにChromeをインストールしたので、メモを残しておきます。
目次
環境
python:3.10.8-buster
検証時は下記のコマンドでDcoker Container を実行しました。
docker container run -it --name selenium-scrape-sample1 --mount type=bind,source="$(pwd)"/src/,target=/mnt --rm python:3.10.8-buster bash
Chromeをインストール
コンテナで下記のコマンドを実行して、Chromeをインストールします。 Dockerfileに書くときは「-y」を追加してあげれば、そのまま動くはず。
apt update
apt install x11vnc xvfb fluxbox wget wmctrl gnupg2
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list
apt update
apt install google-chrome-stable
動作確認
コンテナで下記のコマンドを実行すると、スクリーンショットが保存されます。
google-chrome --no-sandbox --headless --disable-gpu --screenshot="screenshot_$(date +"%Y%m%d").png" --window-size=1280,1080 https://www.ugtop.com/spill.shtml
実際に保存された画像がこちら。 HeadlessChrome 106.0.5249.119が動いていることがわかります。
Seleniumも使ってみる(Driverでエラー)
Dcoker ContainerにChromeをインストールしたら、次にやりたいことはSeleniumを使った自動化です。
今回インストールしたChromeの安定版に一番近いバージョンのchromedriver-binaryをインストールしましたが、PythonからSelenium動かそうとするとDriverでエラーが発生。 他にもいくつかのバージョンのchromedriver-binaryを試しましたが、同じくエラー。
pip install selenium
pip install chromedriver-binary==106.0.5249.61.0
2022年10月20日頃の時点では、最新のChrome Stable版で正常に動作するdriverを見つけることができなかったので、一旦諦めました。
最後に
Docker環境にChromeをインストールし、久しぶりにSeleniumを使ってみました。SeleniumはDriverとの相性問題を度々聞いていましたが、今回自分でもエラーに遭遇しました。
E2Eテストを自動化したい場合、以前使って比較的安定していたCodeceptJSか、もしくはMicrosoftが開発しているPlaywrightを使うのがいいのかもしれません。
- CodeceptJS+DockerでWebアプリのテストを自動化する · kapieciiのブログ
- Playwright を使用したモダン Web アプリのテスト - Events | Microsoft Learn