Selenium入門の入門

Published: 2016年7月18日 by tomsato

概要

Webブラウザの操作を自動化するツールであるSeleniumについてまとめます

どんなものなのかとどう使うのかを簡単にまとめます

Selenium IDE、Selenium WebDriverなど色々ある理由は以下を参考にする
Selenium WebDriverとSelenium IDEなどについて

とりあえず使いたいという人はSelenium IDEを使えば大丈夫かと思います(この記事の執筆当時だったら)

seleniumgif

Seleniumとは

Webアプリケーション向けのテスト自動化ツール

ボタンクリックや文字入力してからの検索など様々なブラウザの操作を自動化することができる

環境準備

Firefoxをインストール

各々インストールしてください

Selenium IDEをインストール

※ Firefoxブラウザで作業する

Seleniumの公式サイトから「Selenium IDE」をページ内検索
http://www.seleniumhq.org/download/

以下のページに遷移できるので「Firefoxへ追加」よりアドオンを追加する
https://addons.mozilla.org/ja/firefox/addon/selenium-ide/
selenium01
Firefox再起動後、Seleniumを起動できることを確認する
selenium02
起動画面はこんな感じ
selenium03

Selenium IDEを使ってみる

テスト項目について

Seleniumユーザコミュニティが用意しているデモサイトを使用する
selenium04
「予約フォーム入力」→「内容確認」→「確定」
とページ操作のテストができるためその流れを行うページ操作をSeleniumに覚えさせてテストを行う

具体的な操作として

  • 予約入力フォーム
    • 宿泊日「2016年9月11日」と入力
    • お名前「hoge」を入力
    • 「次へ」ボタンを押す
  • 確認画面
    • 「確定」ボタンを押す
  • 確定完了画面
    • 「予約を完了しました。」と表示されていることを確認する

この予約登録の1連の流れを実行できることを確認する

ブラウザ操作を記憶させる

Seleniumはユーザが実行したブラウザ操作を記憶することができます。その機能を利用して予約登録の1連の流れを記憶させてテストケースとします。

右の記録ボタンがある、Selenium IDEを起動すると勝手にオンになっている
selenium05
この状態で先ほど記述した1連のブラウザ操作を実行するとSeleniumに操作が記録されていくのがわかる
selenium06
「予約を完了しました。」が表示されていることを確認するにはメッセージの上で右クリックして「verify Text」を選択する
selenium08
「記録ボタン」をクリックして記録を終了する
その後テストケースに名前を付けて保存する。このファイルがあればいつでもテストができるのと他の人にテストしてもらうことも可能になる
Selenium07

テストケースを実行する

Selenium上でテストケースが開かれている状態で実行ボタンを押すだけで実行できます
selenium09
実行すると自動的にFirefoxが操作されているのとSeleniumの画面が動作しているのがわかるかと思います

問題なく実行できれば緑色になってどこかでエラーになった場合は赤色で表示されます

補足:ファイルをPHPUnit形式に出力する

「テストケースに名前を付けて保存」をする時にデフォルトではhtml形式で出力されるが「テストケースをエクスポート」でJava、Ruby、C#、Python形式で出力することができる、また別途「PHP Formatters」のFirefox拡張を導入することによってPHPUnit形式で出力することができる

https://addons.mozilla.org/ja/firefox/addon/selenium-ide-php-formatters/

<?php class Example extends PHPUnit_Extensions_SeleniumTestCase { protected function setUp() { $this->setBrowser("*chrome");
   $this->setBrowserUrl("http://example.selenium.jp/");
  }

  public function testMyTestCase()
  {
    $this->open("/reserveApp/");
    $this->type("id=reserve_month", "9");
    $this->type("id=reserve_day", "11");
    $this->type("id=guestname", "hoge");
    $this->click("id=goto_next");
    $this->waitForPageToLoad("30000");
    $this->click("id=commit");
    $this->waitForPageToLoad("30000");
    $this->verifyText("css=h1", "予約を完了しました。");
  }
}
?>

最後に

Seleniumは動作確認や毎回同じ操作をする仕事の自動化をすることができるので大変便利です

しかしテストケースの規模が大きくなってくるとUIを少しでも変更されるとすぐにSeleniumが落ちてしまったりして管理コストがかかることも事実なので頑張って運用して欲しいと思います

 

Share

最近の投稿

NetlifyのSplit TestingとFunctionsについて使い方をまとめる Split TestingはGitHubのブランチをベースにしたA/Bテストを行うための機能のことで、FunctionsはNetlifyでAWS Lambdaを使うことができる

NetlifyとはHTMLなどの静的コンテンツのみで構成されたWebサイトを閲覧できる形で配信するWebサービス GitHubやBitbucket、GitLabなどと連携して使うことができて、リポジトリにプッシュすることで自動でCI/CDを行うことができる、無料枠が豊富で独自ドメインを設定可能

WordPressからJekyll(GitHub Pages)に移行した手順をまとめる。 お金的な事情や使いやすさなどの理由で無料のJekyll+GitHub Pagesに移行した。JekyllとはMarkdown等から静的ページを生成する静的サイトジェネレータ

Scala開発のためにScalaらしさをまとめる 言語設計者の設計思想を元にScalaらしさについてまとめる オブジェクト指向と関数型の融合について

StorybookとはUI開発環境を提供するツール React、React Native、Angular、Vueなどをサポートしている ユーザーは独立した開発環境でコンポーネントを個別に作成して挙動の確認をテストできたり、コンポーネントを一覧にしてカタログ化できるので他の人に紹介する時に使えたりする

カテゴリ一覧

タグ一覧