クリーンなSelenium-Java自動化フレームワークを構築する方法:Page Object Modelを使用して
自動化テストを始める最初の頃は、すべてのテストスクリプトを単一の巨大なファイルに書くのが簡単です。しかし、プロジェクトが成長し、ウェブ要素が変わるにつれて、メンテナンスは悪夢になります。
それがPage Object Model (POM) が救済に来ます。このクイックガイドでは、JavaとSeleniumを使ってテストロジックをページレイアウトからきれいに分離する方法を見ていきます。
🚀 なぜページオブジェクトモデルか?
POM は、アプリケーションの各ウェブページに対応する Page クラス を持つ設計パターンです。このクラスは、そのページ上で実行できる要素のロケータとアクションを保持しています。
主な利点:
- 再利用性: 1回のロケーターの書き込みで、複数のテストで使用できます。
- 簡単なメンテナンス:ボタンのIDが変更された場合、20種類の異なるテストスクリプトではなく、1箇所だけ修正すればよい。
- 読みやすさ:実際のテストファイルは、平文の英語のステップのように見えます。
💻 コードの構造
実際の例を見てみましょう:簡単なログインフローを自動化する方法です。
1. ページオブジェクトクラス
このクラスはログインページを表現します。ウェブ要素(ロケーター)とそれらとやり取りするためのメソッドを含んでいます。
java
package pages;
import org.openqa.selenium.By;
import org.openqa.git.WebDriver;
public class LoginPage {
private WebDriver driver;
// 1. Locate the Web Elements using private variables
private By usernameField = By.id("username");
private By passwordField = By.id("password");
private By loginButton = By.id("submit-btn");
// Constructor to initialize the driver
public LoginPage(WebDriver driver) {
this.driver = driver;
}
// 2. Action Methods
public void enterUsername(String username) {
driver.findElement(usernameField).sendKeys(username);
}
public void enterPassword(String password) {
driver.findElement(passwordField).sendKeys(password);
}
public void clickLogin() {
driver.findElement(loginButton).click();
}
}













