ページ オブジェクト モデル (POM) とは何ですか? Selenium 自動テストにどのようなメリットがありますか? #インタビューの質問

王林
リリース: 2024-07-16 22:21:41
オリジナル
1103 人が閲覧しました

What is the Page Object Model (POM), and how does it benefit Selenium automation testing? #InterviewQuestion

インタビューの質問: ページ オブジェクト モデル (POM) とは何ですか? Selenium 自動テストにどのようなメリットがありますか? POM を実装した特定のプロジェクトと、それがテストのメンテナンスとスケーラビリティに与える影響について話し合います。

Selenium 自動テストのページ オブジェクト モデル (POM)

ページ オブジェクト モデル (POM) は、Web 要素と Web ページ上のアクションをページ オブジェクトと呼ばれる再利用可能なクラスに抽象化することで、テストのメンテナンスとスケーラビリティの強化に役立つ Selenium WebDriver の設計パターンです。

POM を使用する利点:

  • コードの再利用性: ページ オブジェクトは Web 要素と関連メソッドをカプセル化し、複数のテスト間で再利用可能にします。
  • 簡単なメンテナンス: UI への変更はページ オブジェクトに限定され、更新がローカライズされるためメンテナンスの労力が軽減されます。
  • スケーラビリティの向上: POM は構造化されたテスト開発を促進し、新しいテストの追加や自動化の取り組みのスケールアップを容易にします。
  • 可読性の向上: ビジネス ロジックとページの対話が分離されるため、テストがより読みやすく理解しやすくなります。

例: ユーザー名、パスワードのフィールド、およびログイン ボタンを備えたログイン ページがあるとします。 Java でのページ オブジェクトは次のようになります。

ログインページ.java

この例では、WebElement ロケーターを別のクラスに分離し、明確さと保守性を高めるために @FindBy アノテーションを使用します。

LoginPageElements.java

class LoginPageElements {
        WebDriver driver;

        @FindBy(id = "username")
        WebElement usernameField;

        @FindBy(id = "password")
        WebElement passwordField;

        @FindBy(id = "loginButton")
        WebElement loginButton;

        public LoginPageElements(WebDriver driver) {
            this.driver = driver;
            PageFactory.initElements(driver, this);
        }
    }
ログイン後にコピー

LoginPage.java:

    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.support.FindBy;
    import org.openqa.selenium.support.PageFactory;

    public class LoginPage {
        private WebDriver driver;
        private LoginPageElements elements;

        public LoginPage(WebDriver driver) {
            this.driver = driver;
            this.elements = new LoginPageElements(driver);
            PageFactory.initElements(driver, this);
        }

        public void enterUsername(String username) {
            elements.usernameField.sendKeys(username);
        }

        public void enterPassword(String password) {
            elements.passwordField.sendKeys(password);
        }

        public void clickLoginButton() {
            elements.loginButton.click();
        }
    }
ログイン後にコピー

説明:

  • LoginPageElements.java: このクラスは、@FindBy アノテーションを使用して WebElement ロケーターを格納します。 PageFactory.initElements を使用して要素を初期化し、WebElements を初期化します。
  • LoginPage.java: このクラスは WebDriver と LoginPageElements を初期化します。これには、ログイン ページ要素を操作するためのメソッドが含まれています。
  • @FindBy アノテーションは、driver.findElement 呼び出しを必要とせずに要素を検索するのに役立ち、コードの可読性が向上し、重複が削減されます。

以上がページ オブジェクト モデル (POM) とは何ですか? Selenium 自動テストにどのようなメリットがありますか? #インタビューの質問の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!