RPADocker上でSeleniumとPythonを動かす方法【composeでビルド】2020-11-26DockerでSeleniumを動かそうとしてもなかなか上手くできない・・Docker上でSeleniumとPythonを動かす方法を紹介するね〜本記事では、Docker上で、「実際に動く」SeleniumとPythonの環境の作り方をご紹介します。最終的には、Docker上でSeleniumを使って、「yahooで何かを検索して、検索結果の画面をスクリーンショットする」サンプルプログラムも紹介します。(この部分はnoteに公開)少しわかりづらいですが、こんなイメージです。最近、何かと多い画面操作を自動化することにハマってます。わかりづらいですが、Googleで何かを検索して、その画面を保存するプログラムです。iPadで動きが見れるように設定してるので、色々検証しやすい。・DockerでSeleniumを使ってブラウザの画面操作をしてみたい。・自身の端末にDockerをインストールされている。driverを入れてもなかなか使えない。いう方も多いのではないでしょうか?実はDocker上でSeleniumを使うには、パソコン上のブラウザにアクセスして使うのは困難(できない?)です。このため、Docker上でSeleniumを使うには、次の3つの環境(コンテナ)が必要となります。・selenium/hub・selenium/node-chrome-debug・Python環境selenium/hubこれは、「selenium/node-chrome-debug」に向けてseleniumのコマンド(処理)を実行するための環境(コンテナ)です。hubで公開されていて、誰でも使えます。selenium/hubselenium/node-chrome-debugこれは、selenium/hubからの処理を実際にChromeで実行する環境です。1つのselenium/hubに対して、複数の実行環境を作ることも可能です。実行画面を確認するために、VNCという画面共有するアプリもインストールされています。hubで公開されています。selenium/node-chrome-debugPython環境これは、Pythonを動かす環境です。seleniumでSeleniumだけ入っていればOKです。全体イメージはこのようになります。Docker上でSelenium・Pythonを使うメリット正直、PythonとSeleniumを使う分には、Docker上で行わなくてもできます。Dockerを使わない方が、断然に簡単にできます。Driverを入れて、それをPythonで繋いで実行するだけなので。Docker上でSeleniumを使うメリットを3つ紹介します。・レンタルサーバなどの他の環境にも移行しやすい。24時間スケジュール実行も可能となる。・別端末からSeleniumの実行画面を確認できる。・簡単に複数のSelenium+Python環境を構築できる。レンタルサーバなどの他の環境にも移行しやすい。24時間スケジュール実行も可能となるDockerでSelenium・Pythonを作ることで、他の環境にも移行しやすくなります。Dockerイメージに元になっているDockerfileとdocker-composeファイルさえあれば、簡単に同じ環境を構築できるからです。これにより、レンタルサーバなどの外部サーバにselenium+Python環境を作れば、24時間なにかの処理を行わせることもできます。別端末からSeleniumの実行画面を確認できる。selenium/node-chrome-debugに画面共有のアプリも搭載されているため、パソコンでプログラムを実行して、動作確認は別端末で行うことも可能になります。上のツイートの動画のようなイメージです。端末を分けることで、動作確認の作業効率も上がります。個人ではなかなかしないかもしれませんが、複数端末でも動作確認をできるようになります。簡単に複数のSelenium+Python環境を構築できる。Selenium+Python環境といっても、Pythonのバージョン、インストールするライブラリによって複数のPython環境でSeleniumを使うことがあります。こんな感じのバリエーションです。・Selenium+Python環境(Anacondaあり)・Selenium+Python環境(Anacondaなし、Pythonのみ)・Selenium+Python環境(cron利用)こんな時に、Dockerだと(実際のパソコン単位ではなく)コンテナ単位ですぐに作ることができ、とても便利です。Docker上でSeleniumとPython環境を構築する方法それでは、Docker上でSeleniumとPython環境を構築する方法を紹介します。パソコンにDockerが入っている方は、次の5つのステップを行えば、すぐにDockerでSelenium+Python環境が作れ、サンプルプログラムを実行できます。必要なファイルは次の3つのファイルになります。・docker-compose.yml・Dockerfile・sample.py(サンプルプログラム)yahooで何かを検索して、検索結果の画面をスクリーンショットするといった簡単な処理です。ファイルの中身は、他のサイトなどを参考にして自分で考えてみると、かなり勉強になります!この3つのファイルの中身は、次のnoteで公開しています。※質問対応あり他のサイトで調べる時間がない・・すぐに動作するものを作りたい!!という方は参考にしてみてください。ファイルの内容について質問対応もしています。DockerでSeleniumとPython環境を構築する手順それでは、上の3つのファイルを使って、環境を構築する手順を説明します。3つファイルを同一フォルダに格納する上の3つのファイルを任意の同一フォルダに格納します。docker-composeでDockerイメージをビルドするMacの場合はターミナル、Windowsの場合はコマンドプロンプトで、step1で作成したフォルダに移動し、ビルドのコマンドを打ちます。builtとtaggedができていればOKです。selenium_build_webの部分は、step1の「フォルダ名+_web」となります。docker-composeからコンテナを起動するビルドが終わったら、次はターミナルorコマンドプロンプトでコンテナを起動します。done上の3つのコンテナがdoneとなっていればOKです。これにより、3つのコンテナが正常に起動している状態です。step4Python環境のコンテナのbashを起動する次のコマンドの通り、Python環境のコンテナのbashを起動します。bashこれにより、コンテナのOSに入ることができます。step5Seleniumのサンプルコードを実行するstep1で作成したフォルダをマウントしている、workフォルダに移動します。workフォルダ内の「sample.py」を実行します。Playから無料ダウンロード可能)を起動しておくと、モバイル端末で、処理の画面遷移を確認できます。sample.pyこの処理で、step1で作成したフォルダ(Pythonコンテナのworkフォルダ)にスクリーンショットの画像ファイルをが保存されます。note」と検索したので、次の画像が保存されました。停止するときは、次の2ステップになります。step1Python環境のコンテナから出るこれはコンテナ上で、exitと打つだけです。コマンドプロンプト上で、次のコマンドをうち、3つのコンテナを停止します。selenium_build_default/code>上のようにすべて「done」になれば、正常に停止できてます。以上、Docker上でSeleniumとPythonを動かす方法の解説でした。Seleniumでいろんなサイトの自動プログラムを作ってみてください。最後まで読んでいただき、ありがとうございました。0からDockerを知りたい方向けPythonは、パソコンではなくDockerで使った方がよいメリットを解説しています。【Python環境構築】パソコンではなくDockerへのインストールが断然おすすめ0からPythonを勉強したい方向けおすすめのUdemy講座を紹介します。筆者もこの講座で勉強しました。-Pythonを利用-インスタって自動で投稿できないのかな。...4これまでPythonで作ったツール・プログラム(ブログ、SNS、画像処理)ここでは、サイト管理者のいなサラがこれまでPythonで作ったものをご紹介します。-Pythonを利用-いなサラ田舎の情シスサラリーマン。妻と娘(5歳、1歳)の4人家族。2017年にNTTデータからUターン転職し、事業会社の社内SEで勤務。note」を立ち上げ、収益化。-Pythonを利用-インスタって自動で投稿できないのかな。...4これまでPythonで作ったツール・プログラム(ブログ、SNS、画像処理)ここでは、サイト管理者のいなサラがこれまでPythonで作ったものをご紹介します。