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エンジニア採用情報

  関連記事

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

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

no image
Polymer on Rails

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

ECMAScript6を使ってみた ~「Promise」編

ECMAScript6とは 一応ちょっとだけ説明しておくと、 ECMAScript(エクマスクリプト)は、Ecma Internationalによって標準化されたスクリプト言語で、バージョン6が2015 年 6 月 17 日に標準仕様として発行されました。(以下、ES6と呼びます) ES6ではcon …

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

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

fastavroとjqでAVRO形式のファイルからデータを取得しよう

AVRO形式のファイルを取り扱いたい AVROとはApacheプロジェクトのひとつとして開発されているデータ交換形式です。 コンパクトなバイナリで高速なシリアライズ・デシリアライズが行えるため、サーバーログなどに利用されています。 弊社内での一部システムのログデータにも利用されているのですが、専用の …

クラウド電話API “Twilio”で起こされてみた

どうも、開発部のクラヴマガです。 弊社サービスも最近はAWSの様なクラウド環境でサービスを構築することが多くなりました。 そこで問題になるのが、障害などによる深夜対応・・・。 データセンターに物理サーバをおいていた頃は、データセンターから障害発生時に 電話連絡をもらっていたのですが、クラウド環境では …

【小ネタ】タスク管理ツール移行: Trello から Asana

  プロジェクトチームのタスク管理ツールを Trello から Asana に変えることになり、 タスクの移行が意外と簡単にできた、というお話です。 Trello と Asana もともと使っていたのは Trello(トレロ)です。 プロジェクト > タスクグループ > タスク …

no image
Angular.jsのvalueとfactoryの違いを考える

次のようなHTMLがあったとする。 [code language=”html”] <!doctype html> <html lang="jp" ng-app="App"> <head> <me …

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

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

MacのSSHポートフォワーディングツール「autossh」と「Coccinellida」をご紹介!

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