Python
Mac
Selenium
テスト

【自動テスト】Selenium×Python導入手順を出来るだけ簡潔に分かりやすく書いてみる(Mac編)

はじめに

最近「自動テスト」というワードをよく目にしますが、
導入に関する記事がネットに少なかったり記事によって内容が様々だったりで、導入のハードルが高いと感じている方もいるかと思います。

スマホ実機での自動テストとなると少々ややこしかったりするのですが、Mac のブラウザだけであれば割と簡単に導入することが可能です。

本記事では「初期状態の PC でもこの通りにやれば上手くいく」というレベル感を目指して書いていこうと思います。

前提

  • 各ソフトウェアについての細かい説明は省略いたします
  • ターミナルでの実行ディレクトリは、ホームディレクトリの想定といたします

環境

  • macOS Sierra(10.12.6)
  • Python(3.5.0)

筆者の環境は上記の通りです。
ある程度近い環境にしていただけるとスムーズに導入出来ると思います。
※ Python は3系でないと一部のブラウザで上手く動きませんでした

Homebrew

インストール

https://brew.sh/index_ja.html
以下をターミナルで実行します。

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Pyenv

インストール

以下をターミナルで実行します。

$ git clone git://github.com/yyuu/pyenv.git ~/.pyenv
$ brew install pyenv

PATH の設定

.bash_profile ファイル(無ければ作成)に以下を追記します。

export PATH="$HOME/.pyenv/shims:$PATH"

設定した内容を反映するため、一度ターミナルを再起動するか以下をターミナルで実行します。

$ source .bash_profile

Python

インストール

以下をターミナルで実行します。

$ pyenv install 3.5.0

バージョン切り替え

以下をターミナルで実行します。

$ pyenv global 3.5.0
$ python --version
Python 3.5.0

Python 3.5.0 と表示されれば OK です。

Selenium

インストール

以下をターミナルで実行します。

sudo pip install selenium

WebDriver

Chrome

以下をターミナルで実行します。

$ brew install chromedriver

Firefox

https://github.com/mozilla/geckodriver/releases
上記ページより、末尾「macos.tar.gz」となっているファイルをダウンロードし、
内包されている「geckodriver」を「/usr/local/bin」に移します。

Safari

Safari の「環境設定」から「詳細」タブを開き、
「メニューバーに"開発"メニューを表示」にチェックを入れます。

表示された「開発」メニューから「リモートオートメーションを許可」にチェックを入れます。

実行

以上で自動テストに必要な準備が整ったかと思いますので、最後に正しく動くことを確かめます。

test.py
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.google.co.jp")

このコードをコピーして、test.py というファイルを作成します。

作成できたら、ターミナルで以下を実行します。

python test.py

上手く動けば、Chrome が立ち上がり Google に遷移されたかと思います。
また、Chrome という記述を Firefox/Safari に変更するとそれぞれのブラウザで実行できます。

今回は「指定した URL に遷移」という設定のみでしたが、その他色々なことが出来るので、以下を参考にしてみてください。
http://www.seleniumqref.com/api/webdriver_gyaku.html

まとめ

筆者はここまでの導入でも色々なエラーに苦戦し何とか動くところまでたどり着いたので、この記事が誰かの参考になれば幸いです。

また、今回は Mac のブラウザのみでしたが、次はスマホの実機テスト手順についても書こうと思います。
(ちなみに、VirtualBox 上の Windows 環境でも動かそうと試みましたが、上手く動かなかったため詳しい方ぜひ教えてください…)