Como utilizar Page Objects nos testes automatizados com Appium.
Antes de começar você sabe o que é Page Objects??
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:
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.
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.
Referências: