![Licence Creative Commons](https://i.creativecommons.org/l/by-nc-nd/4.0/80x15.png)
Le design pattern "page object" est un modèle de conception très populaire qui permet de structurer un code de tests automatisés dans le but d'éviter les problèmes de maintenabilité.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQqGvskLjNuxLZlOPr5uQxGm7dYDTvUzFNH15T1ja1VQAaMiJ4vCNp0f3cKD4aygs0rRcq2GzzSRvOVtAPvuPPSoOd_YbjJmIOdAYay4iAihVLmZj-M8_v9wDXKQPkW0j5RLza6pv887AG/s1600/page-object.jpg)
Les méthodes d'une classe de type "page object" correspondent à des actions possibles sur une page. Une "page object" doit fournir des mécanismes pour manipuler, observer et rechercher des éléments d'une page.
Ci-dessous un exemple de ce patron de conception
public class LoginTest extends BaseTest { @Test public void testLogin() { LoginPage loginPage = new LoginPage(this.getWebDriver()); HomePage homePage = new HomePage(this.getWebDriver()); loginPage.setUsername("administrator"); loginPage.setPassword("password"); loginPage.submit(); if(homePage.isDisplayed()){ this.setPassed(); } this.setFailed(); } }
Les principaux avantages de ce modèle sont :
- la réduction de la quantité de code dupliqué
- la réutilisabilité des classes page object pour différents tests
- une maintenance plus facile en cas de modification de l'interface utilisateur
- un code plus lisible et plus compréhensible
Note: Une classe de type "page object" ne représente pas forcément une page entière mais peut représenter un élément significatif d'une page comme par exemple, le header d'une application web.
Références: