SHOEISHA iD

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

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

「日本Seleniumユーザーコミュニティ」のエキスパートが教えるSelenium最新事情

Javaで簡単にUIテストを書けるSelenideを使おう~Selenideの概要とテストの保守性を上げるPage Objectパターンの紹介

  • X ポスト
  • このエントリーをはてなブックマークに追加

Page Objectパターンとは

 Page Objectパターンとは自動テストでよく用いられる手法の一つで、対象画面毎にクラスを作成し、その画面固有の操作/要素について定義する方法です。Seleniumのサイトでも説明されています。この手法では以下のようなメリットが生まれます。

  • 処理の重複を避ける
  • 画面レイアウト変更などにより要素取得方法が変更になっても、テスト自体への影響を局所化できる
  • 要素取得の実装をテスト記述側で意識しなくてすむ
  • 実装方法によっては、テスト記述でSelenium固有のAPIを意識せずにすむ

 今回のサンプルでは、Page Objectをさらに要素取得と要素への操作の二つに分けることで実現します。

 こうすることで、テストそのものでは要素に対する操作だけを使い、要素取得は意識しないようにします。また、テストでSelenium/SelenideのAPIを隠蔽します。

手順[1]

 ではSelenideを使い、Page Objectパターンを用いたテストの書き方を、実際のコードを参考に見ていきましょう。

プロジェクト(pom.xml)の作成

 さて、Selenideでテストを書くにあたりプロジェクトを作成します。

 本記事ではApache Mavenを利用するため、pom.xmlを作成します。pom.xmlは、以下のようにSelenideとJUnitへの依存を追加して記述します。Selenideは、テストの基盤となるPage Objectをsrc/main/java配下に記述するため、scopeをデフォルトのcompileにしています。

 利用するライブラリのバージョンは以下の通りです。

ライブラリ バージョン
Selenide 4.5.1
JUnit 4.12
WebDriver 3.4

 WebDriverへの依存はSelenideから間接的に行われるので、明示的に記述する必要はありません。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example.selenide</groupId>
    <artifactId>codezine</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>codezine</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>com.codeborne</groupId>
            <artifactId>selenide</artifactId>
            <version>4.5.1</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

InttelliJ IDEA の起動とセットアップ

 先に作成したpom.xml を指定してIntelliJ IDEAを起動します。

 起動後にモジュールのコンテキストメニューから[Maven]-[Reimport]を指定し、pomの定義にある依存関係の解決を行います。

 コマンドラインで行う場合は

mvn compile

 と実行します。

Page Object の作成

 次に各画面毎の要素取得が書かれるPage ObjectのBaseを作成します。

 触る必要がある要素は主に以下のようなものがあります。

  • 入力項目
  • ボタン
  • メッセージエリア

 まずはこれらの要素だけを取得する部分だけ作成していきます。

次のページ
手順[2]

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

  • X ポスト
  • このエントリーをはてなブックマークに追加
「日本Seleniumユーザーコミュニティ」のエキスパートが教えるSelenium最新事情連載記事一覧

もっと読む

この記事の著者

島根 義和(シマネ ヨシカズ)

 肌年齢17歳、外見年齢37歳のごくごく普通のプログラマ。 25歳の頃、デスマーチを経験したことでソフトウェア工学に目覚め、開発プロセス、品質管理等を独学で勉強し続ける。がなかなか実践できない。 好きな技術書はスティーブ・マコネルの「ラピッドデベロップメント」。 2012年よりJaSST Tokyo実行委員。 スラド: id:shimashima Twitter: @shimashima35 GitHub: https://github.com/shimashima35/

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

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

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/10335 2017/08/24 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング