POM( Page Object Model design pattern)

Danilo Santos
4 min readFeb 15, 2019

--

Neste primeiro post do ano decidi falar um pouco sobre POM, apesar de já ser um assunto batido, ainda vejo muitos projetos que não seguem corretamente este padrão de design ou que deturpam o conceito. Em uma de minhas entrevistas sofri duras críticas por ter tentado aplicar o modelo POM em um de meus projetos de automação, e isso foi ótimo já que passei a ler mais e entender mais sobre este padrão.

De acordo com o Page Object Model devemos manter nossos testes e localizadores de elementos separadamente, usando um conceito de código limpo para facilitar o entendimento e manutenibilidade. De um modo geral os casos de teste são otimizados, pois podem utilizar métodos de objeto de página nas classes POM. Isso quer dizer que qualquer mudança na interface do usuário pode ser facilmente implementada, atualizada ou mantida dentro do Page objects e classes. Uma outra característica importante é que há uma separação clara entre o código de teste e o código específico da página, como localizadores e layout, deixando muito mais fácil manter o código. Em outras palavras isso faz com que se tornem necessárias alterações de código apenas em classes de objeto de página quando ocorre alguma alteração na interface do usuário, como já dito anteriormente, reduzindo também a duplicação de código.

Implementando o Page Objects:

Digamos que estamos lidando com um projeto com múltiplas páginas, onde cada uma delas contém campos que podem ser unicamente referenciados com suas respectivas páginas. A seguir irei implementar o conceito de page Objects em um projeto que tem como objetivo automatizar o processo de login no facebook utilizando o TestNg, abaixo a estrutura do meu projeto

1° Passo:

Criar a classe TestPage.java, Aqui criamos um objeto do WebDriver, maximizamos o browser, indicamos onde está nosso chromedriver…

TestPage.java (Classe base)

2° Passo:

Criar classes para cada página(Exemplo: Página de login, página de mensagens…) para manter os elementos e seus métodos. Para cada página criamos uma classe separada com um construtor, neste caso sugiro identificar todos os localizadores e mante-los em uma classe, permitindo que possamos os utilizar em vários métodos. Abaixo crio os arquivos java(HomePage.java e LoginPage.java) para suas respectivas páginas(Página de Login do Facebook e Página da Caixa de Entrada do Facebook) para manter os localizadores de elementos e seus métodos

HomePage.java

LoginPage.java

3° Passo:

Criar o teste com base nas páginas já criadas(LoginTest). O meu cenário ficará da seguinte forma: O browser será iniciado, serão inseridas os meus dados de acesso e em seguida faço o login. Por último verifico o nome do usuário logado e faço logout.

LoginTest.java (Test Case 1)

4° Passo:

Criar o aquivo testng.xml

Agora basta executar o teste, clicando com o botão direito sobre a classe de teste e executando com o TestNG

Source Code:

https://github.com/danilow86/pageObjectsModel

Referências:

Follow Me:

--

--

Danilo Santos
Danilo Santos

Written by Danilo Santos

....Vous aurez des tribulations dans le monde; mais prenez courage, j'ai vaincu le monde. Jean 16:33

Responses (1)