PageObjects

"Page objects are a classic example of encapsulation - they hide the details of the UI structure and widgetry from other components (the tests)." (c) Martin Fowler, PageObject.

Если кратко, весь шаблон PageObject сводится к применению инкапсуляции ради сокрытия технических деталей шагов в тестах. Ниже представлены всего лишь несколько примеров простого теста с использованием инкапсуляции и без.

No Encapsulation

public class GoogleTest {

    @BeforeClass 
    public static void setup() {
        Configuration.baseUrl = "http://google.com/ncr"
    }

    @Test
    public void userCanSearch() {
        open("/");
        $(By.name("q")).val("selenide").pressEnter();
        $$(".srg .g").shouldHave(size(10));
        $$(".srg .g").get(1).shouldHave(text("Selenide: concise UI tests in Java"));
    }
}

Mid-level encapsulation

где:

Higher level encapsulation

где:

More examples

Больше примеров и вариаций реализации шаблона PageObject можно найти в следующих докладах:

  • "KISS PageObjects" by Iakiv Kramarenko [en]:

  • "PageObjects: Лучше проще, да лучше" от Алексея Виноградова [ru]

Last updated

Was this helpful?