「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > ページ オブジェクト モデル (POM) とは何ですか? Selenium 自動テストにどのようなメリットがありますか? #インタビューの質問

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

2024 年 8 月 7 日に公開
ブラウズ:825

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 呼び出しを必要とせずに要素を検索するのに役立ち、コードの読みやすさを向上させ、重複を減らします。
リリースステートメント この記事は次の場所に転載されています: https://dev.to/codegreen/what-is-the-page-object-model-pom-and-how-does-it-benefit-selenium-automation-testing-interviewquestion-2ddp? 1 権利侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3