web自動化のためのSeleniumインストール
個人にしろ法人にしろ事業をしていると毎月の月次処理というものが必ず発生しますよね。報告書を取引先に送付したり、オンラインサービスにログインして請求書をダウンロードしたり、外注費を計算して記録したり。毎月同じ手順をこなしていて、これがまた地味なくせに手間がかかる。いつか自動化してやろうと思うものの、時は過ぎゆくばかり…。
ですが! この度、ようやく重い腰を上げてで自動化しました。今回はその作業ログです。
Seleniumを使う
web界隈従事者であればもうお馴染みでしょう、Selenium(セレニウム)を使います。Seleniumを使うとブラウザ操作を自動化できるのです。
webアプリケーションテストの自動化を目的として使われることが多いようですが、それ以外でも使えるよと公式も言っていますね。
プログラミング技術は必要か?
結論、合ったほうが良いです。
プログラミング技術がなくても、Selenium IDEを使えば大丈夫です。Excelのマクロのように操作しているのを記録して再現してくれるものです。ここではSelenium IDEについては割愛しますが、ちょっとした操作の記録にはこちらのほうが便利です。
ただ、できることは限定されます。細やかに操作を指定したければプログラミングの知識は必要になるでしょう。
プログラミング言語はPython、Java、C#、Ruby、PHP、JavaScriptなど多くの言語が利用できますが、Pythonでの記事が多いように感じました。
僕はPHPerでしてPythonは使ったことがないのですが、情報源が多いほうがいいと思いPythonに初挑戦することにしました。
環境構築
動く状態ができあがってからまとめたバージョン情報です。
macOS Monterey12.5
Google Chrome 104.0.5112.79
Python 3.9.13
Selenium 4.3.0
ChromeDriver 104.0.5112.79.0
Pythonをインストール
Python初挑戦なのでマシンに入っていません。僕はHomebrewがインストール済みなのでそれを使用してサクッとインストールします。Homebrewを使わずにインストールしてもいいと思います。
$ brew install python3
Running `brew update --preinstall`...
(省略)
Error: python@3.9: the bottle needs the Apple Command Line Tools to be installed.
You can install them, if desired, with:
xcode-select --install
と思ったらApple Command Line Toolsを先に入れろとエラーが吐かれました。言われたとおりにします。
$ xcode-select --install
xcode-select: note: install requested for command line developer tools
CUIで完結するのかと思いきやGUIになりました。そんな感じなのね。
そしてインストール完了まで10分くらい掛かりました。ようやくPythonを入れます。
$ brew install python3
python@3.9 3.9.6 is already installed but outdated (so it will be upgraded).
(省略)
Python has been installed as
/usr/local/bin/python3
Seleniumをインストール
次にpipでSeleniumライブラリをインストールします。(Pythonのパッケージ管理はpipという名前なんですね。「ピップ」、声に出したくなります。)
多くの記事でpipを使っていますが、僕の環境ではpipではコマンドがないと言われるのでpip3を使っています。
$ pip3 install selenium
(中略)
Successfully installed PySocks-1.7.1 async-generator-1.10 attrs-22.1.0 certifi-2022.6.15 cffi-1.15.1 cryptography-37.0.4 h11-0.13.0 idna-3.3 outcome-1.2.0 pyOpenSSL-22.0.0 pycparser-2.21 selenium-4.3.0 sniffio-1.2.0 sortedcontainers-2.4.0 trio-0.21.0 trio-websocket-0.9.2 urllib3-1.26.11 wsproto-1.1.0
ChromeDriverをインストール
Seleniumがブラウザをコントロールするためのドライバーをインストールします。今回はChromで動作させるのでChromDriverを使います。
$ pip3 install chromedriver-binary
(中略)
Successfully installed chromedriver-binary-104.0.5112.79.0
最初の実行
hello.pyというファイルを任意の場所に作成します。今回は~/hello.pyに置きました。
ブラウザを起動、Googleを表示、ブラウザを終了するコードです。
hello.py
import chromedriver_binary
from selenium import webdriver
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(options=options)
# ブラウザを起動して、Googleを表示
driver.get('https://www.google.com/')
# ブラウザを終了
driver.quit()
ターミナルで実行
$ python3 ~/hello.py
コードの書き方はたくさん記事があるのに、肝心の実行方法がわからなくて困ってしまいました。単純にpyファイルをPythonで実行すればよいだけでした。(pipと同じで、pythonではなくpython3を使っています。)
ブラウザが起動して、Googleを表示され、その後すぐにブラウザが終了すればOKです。
ひとまずはここまで
これでSeleniumのインストールまでできました。上げた腰がまた重くならないうちに続きをやろうと思います。