Вы задали довольно много вопросов, я попытаюсь ответить на некоторые из них.
Я использовал объект страницы в веб-приложении, используя Selenium, а также в рабочем приложении WinForms (хотя это не строго объект страницы, я использовал его таким же образом - View Object, возможно?). Мой вердикт в том, что он отлично работает, и я определенно рекомендую его.
Вот краткий пример того, что тест может выглядеть, как мы написали:
[Test]
public void AccountPageNameIsLoggedInUsersName()
{
FirstPage() // Returns FirstPage
.LoginAs("tobbe", "s3cr3t") // Returns LoggedInPage
.ClickOnMyAccount() // Returns MyAccountPage
.AssertThat(p => p.Name, Is.EqualTo("tobbe")); // p is of type MyAccountPage
}
Здесь Селен магия помещается внутри метода FirstPage() и на страницах. Таким образом, вы скрываете все лишние детали реализации из теста. Я думаю, вы можете понять, как эти методы реализованы.
Бонус от скрытия материала Selenium внутри страниц заключается в том, что вы можете без изменения теста преобразовать его, например. тест Model-View-Presenter, где объект PageObject представляет представление (это похоже на то, что я сделал в приложении WinForms).
Что касается мастера-страниц, что мы сделали, что мы украсили страницы с интерфейсом и создали методы расширения на этих интерфейсах:
public class LoggedInPage : Page<LoggedInPage>, IMainMenuHolder { ... }
public static class MainMenuHolderExtensions
{
public static MyAccountPage ClickOnMyAccount(this IMainMenuHoder me) { ... }
}