tanaka's Programming Memo

プログラミングについてのメモ。

Selenium+PHPUnit(2016/5/22修正)

PHPUnitSeleniumを連携させて、サーバーやブラウザ上で動作テストができるようにする。資料はPHPUnitの公式サイトにあるので、それに従ってmac上にPHPUnit+Seleniumの環境を構築して動かす。

(2016/3/7時点の最新の情報に修正しました)

情報源

概要

PHPUnitSeleniumと連携することが可能。Selenium 2.x Serverを使う。アクセスするには Selenium RC APIか、一部実装されているWebDriver APIを使う。

インストールの概要

作業手順を以下にまとめる。

Composerのインストール

Selenium Serverのインストール

  • 公式サイトの Downloads を参照して、Selenium Serverをダウンロード
  • ダウンロードした selenium-server-standalone-x.xx.x.jarを、 /usr/local/bin フォルダーに移動させる
mv ~/downloads/selenium-server-standalone-* /usr/local/bin
  • 利用する時は以下のように起動する。例は、今回試した2.52.0を起動するコマンド
java -jar /usr/local/bin/selenium-server-standalone-2.52.0.jar

PHPUnitPHPUnit_Seleniumのインストール

  • 利用したいプロジェクトフォルダーの直下で、ターミナルから以下を実行
composer require phpunit/phpunit
composer require phpunit/phpunit-selenium

.gitignoreの作成

GitHubに登録する場合は、 vendor フォルダーなどの登録不要なフォルダーやファイルを無視する設定を作成する。

  • プロジェクト直下に .gitignore というファイルを作成
  • .gitignoreをテキストエディターで開いて、以下を追加して保存(composer.lockは必要なので以下から外す 2016/5/22)
vendor/*
composer.phar
selenium-server-*.jar
/.settings

以上で、セットアップ完了。

動作確認

PHPUnit マニュアル – 第13章 PHPUnit と Selenium の例17.1を元にしたテストコードで動作確認する。

  • プロジェクトフォルダー直下に新しいフォルダーを作成して、 test という名前にする
  • testフォルダー内に新しいファイルを作成して、 WebTest.php という名前にする
  • 以下のコードを入力する。URLとアサート内容を変更している
<?php

class WebTest extends PHPUnit_Extensions_Selenium2TestCase
{
    protected function setUp()
    {
        $this->setBrowser('firefox');
        $this->setBrowserUrl('http://www.google.co.jp/');
    }

    public function testTitle()
    {
        $this->url('http://www.google.co.jp/');
        $this->assertEquals('Google', $this->title());
    }
}
?>
  • Seleniumサーバーをまだ起動していなければ、新規でターミナルを開いて、以下を入力して起動する
java -jar /usr/local/bin/selenium-server-standalone-2.52.0.jar
  • もう一つのターミナルのプロジェクトフォルダー内から、以下を入力してテストを実行する
./vendor/bin/phpunit test

以上でテストがOKになれば成功。失敗したり、エラーが発生した場合は、どこか作業にミスがあるか、Selenium ServerやPHPUnitphpunit-seleniumのバージョンが古くなっているか、Googleのトップページのタイトルが変更されているので、状況に合わせて情報を更新する。