Como utilizar Page Objects nos testes automatizados com Appium.

Bruno Batista
automação com batista
4 min readMar 8, 2018

Antes de começar você sabe o que é Page Objects??

Não sabe? Não se sinta sozinho, muita gente não sabe!

O padrão Page Objects tem um conceito bem simples , a proposta é de criar um objeto para cada página/tela, e utilizando a boa e velha orientação a objetos para encapsular em cada classe os atributos e métodos, como campos e ações de cada página.

Veja um exemplo abaixo de um page objects:

Veja o PageObjects e o steps como o login ficou mais simples!

Agora olha na imagem abaixo um step sem o uso de page objects, veja como fica bem poluído, com muitas linhas para um simples login, sem contar que para refatorar o código caso o id do e-mail mudasse, seria preciso procurar por todo o código onde tem aquele id para fazer a refatoração, isso é muito trabalhoso.

Nossa que código feio,corre.

Então vamos começar a melhorar nosso projeto:

Vamos criar uma pasta chamada “screens” dentro dessa pasta crie dois arquivos .rb com o nome “base_screen.rb”e “home_screen”, na pasta support crie um arquivo .rb com o nome “page_helper.rb”.

O projeto irá ficar igual a imagem abaixo:

screens — É a pasta onde iremos colocar nossas classes(page objects) para mapear cada tela.

base_screen— É uma classe principal onde iremos criar métodos de ações onde todas as outras classes irão herdar dessa classe BaseScreen.

home_screen — É uma classe(page objects) onde iremos mapear e criar métodos de ações para a tela de login.

page_helper.rb — É um módulo que irá servir para instanciar as nossas classes(page objects).

Agora dentro do arquivo “base_screen.rb” vamos criar os seguintes metódos:

Mas pra que isso bruno? é para evitar muita repetição de código.

Olha um exemplo de como preenchemos um elemento por id:

send_keys_id 'elemento mapeado', 'valor'

Viu como fica mais simples!

Agora vamos usar mapear os elementos da tela de login:

Como a imagem acima para usar o elemento mapeado e bem simples basta passar o nome do método “elementos_do_login” junto com a variável que deseja. como exemplos abaixo:

elemento_do_login[:email]
elemento_do_login[:password]

Agora que a page foi mapeada precisamos configurar o módulo para instanciar as classes,dentro do arquivo page_helper.rb.

Agora pra deixar esse módulo como global basta colocar o seguinte comando dentro do arquivo env.rb

World(Screens)

Agora vamos para ultima parte usar os steps:

Dentro do steps temos que chamar o método login criado na home_screen.rb

Veja como e simples :

Primeiro precisamos chamar o método “home” la do módulo para instanciar a classe e logo em seguida passar o método “fazer_login” da classe “home_screen.rb” e seu valor ficando assim:

Olha a diferença de um login sem page objects e um com page objects:

— — — — — — — — -Demais né? — — — — — — — — — —

Agora pode ligar para seus amigos e dizer que sabe fazer page objects, hahaha.

eae mano,eu sei page objects!!!!!!

Referências:

--

--