SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Selenium 0.7利用手順書

Selenium 0.7利用手順書(前編)

Seleniumの概要とインストール手順

ダウンロード、インストールと使用準備

ダウンロード

 それでは、実際にSeleniumをダウンロードして、インストールをしてみましょう。以下の手順でSeleniumをダウンロードします。

  1. ブラウザでSeleniumのダウンロードページにアクセスします。
  2. zipファイルを任意のフォルダに保存・解凍します。
  3. zipファイルを解凍すると、「selenium-core-x.x.x」フォルダが展開されます(x.x.xはSelenium Coreのバージョン)。
  4. フォルダ名を「selenium-core-x.x.x」から「selenium-core」に変更します*2
  5. 「selenium-core」フォルダをWebサーバ内のWebアクセス可能フォルダに置けば、Seleniumが使用可能となります。Tomcatなら、「%CATALINA_HOME%/webapps/」配下の任意のWebアプリケーション(例えばwebdav)の配下に「selenium」フォルダをコピーすればよいわけです*3
  6. 今回は、以下の理由からSeleniumのテスト用プロジェクト(Webアプリケーション)を新規作成し、そこにテストケースを作っていくことにします。
    • テスト対象のWebアプリケーションとテストケースを分離して管理できる。
    • Seleniumでのテストにおける独自処理(初期化処理など)を実装できる。
*2
 Seleniumのバージョン0.6を使用していて0.7.0に乗せ換える場合は、フォルダ名を「selenium」にリネームします。また、フォルダ名にバージョン番号が入ったままでも動作しますが、バージョンアップの際にテスト用のコード(TestSuite)を書き直す必要が出てきます。
*3
 Tomcat 5.5.xでは、「webapps/」配下に直接「selenium-core」フォルダをコピーしてもTomcatマネージャにアプリケーションとして認識されるため、Seleniumが使用可能となります。
既存プロジェクトにコピー
 もちろん、既存プロジェクト(テスト対象のWebアプリケーション)内に「selenium-core」フォルダをコピーしてもSeleniumは使用可能になります。
 ただし、アプリケーション(.warファイル)を生成する際に、次のような対応が必要となってしまいます。
  • テストケースやSelenium関連ファイルを含めないようにする設定が必要。
  • Seleniumでのテスト用処理サーブレットなどを作成した場合、本番用の「web.xml」を別途用意して切り替えることが必要。

Selenium用プロジェクトの作成

 Seleniumのテスト用プロジェクトを以下手順で作成します。

  1. eclipseで新規のTomcatプロジェクトを作成します。
  2. 今回は、SeleniumTestというプロジェクト名を付けました。以降このSeleniumTestプロジェクトを使ってSeleniumのテストを実施していきます。
  3. このSeleniumTestプロジェクトの直下(WEB-INFフォルダと同列)に、3.1でzipファイルを解凍してリネームした「selenium-core」フォルダをコピーします。
図11 Seleniumのテスト用プロジェクト作成
図11 Seleniumのテスト用プロジェクト作成

動作確認

 では、作成したSeleniumTestでSeleniumが動作するか確認してみましょう。

  1. Tomcatを起動します。
  2. ブラウザでTomcatManagerにアクセスします。
  3. アプリケーション一覧を見るとSeleniumTestが追加されているはずです(アプリケーション一覧にSeleniumTestが追加されていない場合は、コンテキスト追加、デプロイを実施してください)。
  4. ブラウザのアドレスバーに以下のURLを入力しアクセスします。
 Tomcat 5.0.xでは、TomcatManagerのアプリケーション一覧からSeleniumTestをクリックすると、「ディレクトリの一覧」が表示されるので、[selenium-core/]をクリックすることでも起動できます
  1. すると、SeleniumのIndex画面が表示されます。
  2. 図12 作成したプロジェクトから起動したSeleniumのIndex画面
    図12 作成したプロジェクトから起動したSeleniumのIndex画面
  3. ここでは[Acceptance tests]の[Selenium TestSuite]をクリックします。すると、デモの時と同じようなTestRunnerの画面が表示されます。
  4. 図13 作成したプロジェクトから起動したTestRunner画面(Selenium TestSuite)
    図13 作成したプロジェクトから起動したTestRunner画面(Selenium TestSuite)
  5. このTestRunner画面で、いくつかテストを実行してみてください。
  6. 無事テストが実施できたなら、今後SeleniumTestプロジェクト(SeleniumTestアプリケーション)でSeleniumを使ったテストが実施できるということになります。

拡張設定

 動作確認ができたら、より便利に使うために以下の設定を行います。

user-extensions.js

 Seleniumでは、独自のコマンドやElementLocatorを作成して使用することができます。そのために「user-extensions.js」というカスタマイズ用のファイルがあり、ここに追記することでSeleniumの元ソースに手を加えることなく拡張設定が可能です。

 「user-extensions.js」はデフォルトでは存在しない(「user-extensions.js.sample」というファイルになっている)ため、「user-extensions.js」ファイルを作成する必要があります。以下の手順を実施します。

  1. SeleniumTestプロジェクトの「selenium-core/core/scripts/」フォルダ直下に「userextensions.js.sample」というファイルがあるので「user-extensions.js」にリネームします。

ボタンを表示された名前で指定する拡張設定

 Seleniumのデフォルト設定では、ボタンを押す(clickコマンドを使用する)ためにはxpathで属性を組み合わせて指定しなければならず、面倒です。そのため、表示されたボタン名で指定することができるように拡張します。この拡張で「button=ボタン名」という指定方法ができるようになります。以下の手順を実施します。

  1. 「user-extensions.js」を開き、ファイルの末尾に以下のメソッドを追記します。
  2. user-extensions.jsの修正内容
    // ボタン名で指定できるElementLocator
    PageBot.prototype.locateElementByButton = function(identifier,
        inDocument) {
        var elements = inDocument.getElementsByTagName("input");
        if (elements) {
            for (var i = 0; i < elements.length; i++) {
                var element = elements[i];
                var attr = element.getAttribute("type");
                    if ((attr == "submit") || (attr == "button") ||
                        (attr == "reset")) {
                        if (element.getAttribute("value") == identifier) {
                            return element;
                        }
                    }
        }
    }
        return null;
    };
    
  3. 動作確認の手順で、拡張した状態でSeleniumが動作することを確認してください。

既知のバグ対応

 ここでは、まだリリースされていないものの開発コミュニティで既に対処されているバグについての対応を反映させていきます。正式リリースまでの暫定対処になります。

タブ文字に対する取り扱い不備

 具体的には、Firefoxでタブを含む文字列に対して文字列検証コマンドがエラーとなります。この問題はバージョン0.7.1でリリース予定です(BTSの番号:SEL-234)。対処方法は次のとおりです。

  1. SeleniumTestプロジェクトの「selenium-core/core/scripts/」配下にある「htmlutils.js」の65行目を次のように修正します。
  2. htmlutils.htmlの修正内容
    function renderWhitespaceInTextContent(element) {
        // Remove non-visible newlines in text nodes
        if (element.nodeType == Node.TEXT_NODE)
        {
            (修正前)
            element.data = element.data.replace(/\n|\r/g, " ");
            (修正後)
            element.data = element.data.replace(/\n|\r|\t/g, " ");
            return;
        }
    

おわりに

 Webアプリケーション用のテストツールSeleniumについて解説してきました。Seleniumを使用することで、ブラウザ操作を自動化して、Webアプリケーションの試験・検証を効率的に行うことができます。今回はSeleniumの概要として、提供する機能や、メリットや使用する際の注意点ほか、Seleniumのダウンロード、インストール手順について解説しました。

 次回は、いよいよテストケースについての解説です。テストケースを実際に記述し、Seleniumでテストを実行してみます。お楽しみに。

修正履歴

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
Selenium 0.7利用手順書連載記事一覧

もっと読む

この記事の著者

大田尾 一作(株式会社DTS)(オオタオ イサク)

株式会社DTS イノベーション推進部在籍。業務内容は、FintechやIoT、AIといった新しい領域でのビジネスを推進するための調査・研究。日本Seleniumユーザーコミュニティに参加。   

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/436 2007/06/04 13:21

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー