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を作成します。
触る必要がある要素は主に以下のようなものがあります。
- 入力項目
- ボタン
- メッセージエリア
まずはこれらの要素だけを取得する部分だけ作成していきます。