2016-05-08

codeceptionでseleniumを使う方法

以前「PHPの自動テストcodeception【実行サンプルDL可】」 で紹介した codeception がとても便利で最近の開発ではよく利用しています。
ただ、上記の記事でも書いたとおりJavaScriptで生成した入力ボックスなどには対応ができないため、今回は自動でブラウザ操作を行ってくれる「Selenium」をインストールして JavaScriptを含んだページのテストにも対応できるようにする方法をお届けしたいと思います。




【開発環境】

Ubuntu 14.04


【インストール】

まずはSeleniumのインストール。
以下からダウンロードできます。(Selenium Standalone Serverという場所です)
↓↓↓

Selenium - Web Browser Automation

※この記事を作成している時点では 2.53.0 が最新バージョンでした。私の開発環境Ubuntuで apt-get でインストールすると古いバージョンがインストールされてしまうので注意してください。古いものは最新のFireFoxに対応していないらしくうまくいきませんでした。

では、ファイルをダウンロードしたら適当なフォルダに保存して、

java -jar selenium-server-standalone-2.xx.xxx.jar

をコマンドから実行すれば起動します。

※もし実行できない場合は起動するためのパッケージが足りていない可能性があります。必要なパッケージは、こちら が参考になると思います。


【Codeceptionの設定】

ではCodeceptionの設定ファイルを変更しましょう。

(tests/acceptance.suite.yml)

modules:
   enabled:
      - WebDriver:
         url: 'http://localhost/'
         browser: firefox


はい。
これで完了です。
後はいつものように、

codecept run

を実行すれば自動でFireFoxが起動し、入力やデータ送信を全て行ってくれます。
(もし、エラーが出た場合は tests/_output/ にスクリーンショットやHTMLが作成されますのでどこが間違っているかを楽にチェックできますよ)

以上、短いですけど Codeception + Selenium の使い方でした。


【使ってみた感想】

Seleniumの存在を知ってはいたのですがなんだか小難しいイメージが先行してなかなか実行に移せないでいましたが、JavaScriptを含んだページのチェックもできますし、何より実際のブラウザを使っているというのはテスト結果にも安心感がもてます。

ただ、一点だけ問題があるとすればそれはやはり「実行スピード」ですね。
元々は PHPBrowser を使ってテストをしていたのでスピードは全く気にならないものでしたが、Seleniumにした途端「このテスト実行早く終わらないかなー」と待たされる時間が増えました。
ブラウザを起動するなどするので仕方ないですが、このあたりは一長一短ってとこですね。


なお、実は当初は PhantomJS を使ってテストを行っていたのですが、JavaScriptで生成する入力タグがあるとどうもセレクタの指定でうまく行かなかったため、途中で断念してSeleniumを採用することにした経緯があります。
ちなみにこちらの方はそこまでスピードが遅いという印象はなかったので、今後機会があればまたPhantomJSにも挑戦してみたいと思います。

ではでは〜!


(GWで少し不摂生しすぎたかも。。。タバコはすでにやめてますが ^-^)

0 件のコメント:

コメントを投稿