Selenium × PHP でテスト自動化!【環境構築編】


はじめに

みなさんこんにちは、プロダクト開発本部の亀梨です。
普段はXmediaOneというメディアプランニング・広告運用管理・トラッキング・マーケティング分析を行う
統合プラットフォームの開発を担当しています。

テスト自動化の背景

わたくしが担当するXmediaOneでは品質担保のために①コードベース(ScalaTest)の単体テスト②人力での端末操作の単体テスト・シナリオテストを行っていますが、高い品質を維持しようとすると②の工数・負荷が高くなり日々の業務を圧迫しています。
そこで、Seleniumを使ってテスト自動化することで工数削減→さらなる品質強化のためにテストカバレッジ向上をしていこうということになりました。

今回はSelenium導入にあたっての環境構築の手順を紹介したいと思います。
PCはMacでPHPプリインストール済みであることを前提としています。

環境構築の手順

それではさっそく始めていきましょー。

0. テストを実行するディレクトリを作成する

適当なディレクトリを作ります。

1. selenium-serverのインストール

Homebrew経由でインストール

2. 各ブラウザ用ドライバのインストール

SeleniumServer標準ではSafariに対応済み それ以外(ChromeとかFirefox)にはドライバが必要

Selenium Google Chrome Driver

ChromeDriver – WebDriver for Chrome
downloads zip file

Selenium Firefox Driver

ここから最新版をダウンロードする。
本記事執筆時点だとv0.20.1の「 geckodriver-v0.20.1-macos.tar.gz」をダウンロード。
ダウンロードしたらファイルを解凍する。

各ドライバをダウンロードしたらファイルを移動

ダウンロードしたドライバをカレントディレクトリに移動する

3. PHPでWebブラウザを操作するために必要なライブラリ「facebook-webdriver」のダウンロード

Composerのダウンロード

ComposerはPHPのパッケージ管理ツールです。

facebook-webdriverのインストール

Facebookさんが作ってくれたツールです。少し時間がかかります。

4. ここでディレクトリ構成を確認

以下のようになっていれば成功です。

5. Selenium Server の起動

バックグラウンドで起動

以下コマンドを実行します。

ctrl + c でコマンドプロンプトに戻ったら、jobsコマンドを実行するとバックグラウンドでselenium serverが起動しているのが確認できます。

はい、これで環境構築は完了です。

それでは早速テストコードを実行してみましょう

実際に動作するかを以下のテストコードで試してみましょう。

では実行してみましょう。

実行時の動画はコチラ

はい、無事に実行できてスクリーンショット画像も保存されていますね。テスト実行は終了です。
最後に、Seleniumサーバーを必ず終了させましょう。

以上、環境構築でした

これで準備は整いましたので、これからテストケースをじゃんじゃん書いていきたいと思います。
テストコードの知見が貯まってきたらまた投稿したいと思います。それではまたー。


DACエンジニア採用情報

  関連記事

読み方がわからない技術用語 2015

英語圏での読み方を基本的には参考にしています。英語圏でも複数の読み方をしているケースもあるようなので、あくまでも参考程度。2015と書きながら、古い言葉も混じってますが。 async – えーしんく Alt – おると ASUS – えいすーす bower &#8 …

Qiita Team API と Google Spread Sheet でチーム日報を生成する

チーム日報を活用する MarketOne 開発チームでは複数拠点に分かれての開発を行っています。リモート開発が中心となると口頭でのコミュニケーションに限界があるため、テキストベースのコミュニケーションの比重が高い状態にあります。 チケットシステムやソースコード管理ツール上の議論はもちろんおこなってい …

ゼロからAngularでSPAを作ってみた(3) CI: 継続的インテグレーション編

前回までのおさらいと今回やること 前々回(はじめてのアプリ編)と前回(デプロイ・公開編)で、作成した Angular のチャットアプリを Web に公開するところまでいきました。 でも、デプロイするのに、毎回決まったコマンドを打つのって面倒ですよね。 今回は GitHub でソースコードを管理して、 …

no image
AWSにRailsアプリをデプロイする(公開編)

次にデプロイするため“aws rails デプロイ”でググってみるとunicorn、nginxというキーワードがでてくるので とりあえずこれを設定していきます。   アプリのsecret_key_baseの設定 [crayon-5f0aad4d4bbab995596 …

no image
Polymer on Rails

Web Componentsをご存知だろうか。これが普及すればWebの開発は画期的に変わるだろう。 説明すると長くなるので、LIGさんのにその辺はお任せして。(この記事読んでください。) 簡単に言えば、下記にあるような新たに提案されたブラウザ向けAPIの総称。 Custom Elements, 説明 …

modern.IEを使ってMac上でWindows10を動かす

Microsoftが提供している modern.IE というプロジェクトがある。そこで提供されている仮想環境を使って、MacにWindows10をインストールしてみる。ちなみに、このプロジェクトの本来の目的はInternet Explorerの表示確認やデバッグの支援。 VirtualBoxの準備 …

初心者がRailsで開発 – deviseでユーザー認証設定 –

こんにちは、2年目のYukaです。 開発部所属でありながら実は、、 実際に自分で手を動かして開発する機会がなかなかありませんでした。。 しかしついに、、、 開発初心者がRailsでWebアプリの開発に挑戦します!! 今回のゴールは社内でも使用しているGoogleアカウントで簡単にログインができるよう …

x-callback-urlを使ってみた

x-callback-urlとは? iOSのアプリ間連携の仕様の一つみたいです。簡単に言うと、ディープリンクを行うためにカスタムURLスキームを利用するが、アプリ毎にバラバラな規則でURLスキームを設定するとアプリ間連携をスムーズに行うことができないため、どのような規則でURLスキームを設定するかを …

Bootstrapのモーダル機能で多重表示する際に解決しなければならない2つの問題

はじめに みなさんこんにちは、プロダクト開発本部の亀梨です。 普段はXmediaOneというメディアプランニング・広告運用管理・トラッキング・マーケティング分析を行う 統合プラットフォームの開発・保守を担当しています。 エンジニアの皆さん、デザインってどうしてます? わたくしはプライベートでとあるW …

Railsたった14行でアドサーバーAPIができた話

こんにちは。駆け出しエンジニアの近江です。 最近Railsにハマっているので、私が2年間担当しているアドサーバの、簡易版をRailsで作ってみました。 広告やキャンペーンを登録する管理画面はある前提で、ここからたった14行追加するだけでアドサーバーのHTTP APIを作りたいと思います。ついでに配信 …