Teste web automático com Ruby, Capybara e Selenium

Este tutorial se concentra em mostrar como eles podem ser criados projetos para testar páginas da web automaticamente, tem uma explicação superficial com um exemplo de teste para a página do YouTube. Você terá que ter noções básicas de Ruby para entendê-lo bem.

ObservaçãoEste teste foi lançado no Ubuntu 15.10, portanto recomendo usar Linux para sua execução, porém coloco como instalar os programas no Windows.

1. Instale os requisitos necessários


Precisamos do Ruby e suas joias (se você usa Mac, já o terá instalado).

Instalando Ruby no Windows
Para baixar o instalador, clique no seguinte botão:

BAIXAR RUBY PARA WINDOWS

Primeiro, baixamos e instalamos Ruby instalador, (na instalação, certifique-se de marcar a opção de adicionar Ruby ao PATH do Windows), então o kit de desenvolvimento, extraia seu conteúdo no disco C em uma pasta que você terá que criar eu chamo de Devkit, mas você pode chamá-lo do que quiser (veja a imagem a seguir).

Agora abra o cmd do Windows e execute as seguintes instruções:

 chdir C: \ Devkitruby dk.rb initruby dk.rb install

Instalação Ruby no Linux
Nas versões mais recentes já temos Ruby instalado, mas apenas no caso, você deve correr:

 sudo apt-get install rubysudo apt-get install rubygems
[color = # a9a9a9] Instalação Ruby [/ color]

Instale o restante dos programas necessários (válido para todos os sistemas operacionais)
Precisar instalar pepino, que é uma ferramenta de teste que nos ajuda a executar o BDD.

 joia instalar pepino
Nos também precisamos instalar capivara, que é uma linguagem específica que nos ajudará a interagir com as páginas da web.
 gem instalar capivara
E finalmente você tem que instalar selênio, é um driver para Capybara, usa o motor JavaScript do navegador e nos permite ver como o teste é passado visualmente.
 gem install selenium-webdriver
É meio lento.

2. Crie o projeto


Assim que tivermos tudo instalado, vamos criar a estrutura do nosso projeto.

Passo 1
Vamos criar uma pasta, vamos chamá-la Testing-Selenium. Será a pasta que conterá todos os arquivos de que precisaremos, portanto podemos considerá-la como a pasta raiz do projeto.

Passo 2
Dentro da pasta Testing-Selenium (pasta raiz) vamos criar uma pasta chamada funcionalidades. Que conterá tudo que você precisa para executar o processo.

etapa 3
Dentro da pasta de recursos, criamos mais 2 pastas (step_definitions Y Apoio, suporte) e também um arquivo chamado test.feature.

Passo 4
Dentro de step_definitions, vamos criar um arquivo Ruby chamado step_Youtube.rb. e agora dentro da pasta de suporte iremos criar outro arquivo Ruby chamado env.rb.

Etapa 5
Preenchemos o arquivo test.feature, será escrito em linguagem formal (Gherkin), define o teste que queremos passar em uma linguagem que é compreendida por todos (O teste em si é a parte do palco, o resto é uma descrição) Em. Seu conteúdo é o seguinte:

 #language: é característica: Ir para o youtube Como testador, quero entrar no youtube para testar a pesquisa Para saber se tudo funciona bem Cenário: Teste o youtube Já que estou na página do youtube Quando procuro por "Metallica One" Então posso entrar e veja o vídeo "https://www.youtube.com/watch?v=iT6vqeL-ysI"
Na parte do palco não podemos usar acentos, ou caracteres estranhos, e as variáveis ​​são colocadas entre aspas duplas (serão os dados passados ​​para nosso código Ruby).

Etapa 6
É a vez do arquivo step_Youtube.rb, É o código Ruby que passará em nossos testes, olhe para o código que tem (Dado, Quando, Então) cada função se refere a uma linha, aqueles que anteriormente tinham "variáveis" recebem parâmetros (1 para cada variável no recurso. ), para isso é necessário o uso de expressões regulares. Abaixo do código.

 Uma vez que / estou na página do youtube $ / visite 'https://www.youtube.com/?hl=en&gl=EN' fim Quando (/ Eu procuro por "([^"] *) "$ /) do | search | fill_in 'search_query' ,: com => search click_button 'Search' end Então (/ posso entrar e assistir ao vídeo "([^"] *) "$ /) do | vídeo | resultados = todos ('a'). map {| a | a ['href']} if not results.include? (video) raise "Vídeo não encontrado" fim visita (vídeo) fim
Neste código, na segunda função você pode ver search_query, este nome que eu não inventei é o atributo name que a caixa de pesquisa do Youtube tem.

A instrução: resultados = todos ('a'). map {| a | a ['href']}O que ele faz é obter uma lista de todos os elementos a na página, e dessa lista obtém os valores dos atributos href, armazenando-os na variável de resultado, e desta forma podemos ver se a web que queremos visitar está na página, neste exemplo, vai depender se a música aparece na primeira página, então se o teste não aparecer vai sair em vermelho e se não for tudo em verde vou mostrar uma imagem em final da saída).

Etapa 7
Vamos preencher o último arquivo env.rb, é um arquivo de configuração, ele indicará o idioma a ser usado, os drivers, etc. Neste caso, estamos usando Capivara e Selênio.

 require 'capivara' require 'capybara / dsl' Capybara.default_driver =: módulo selênio Helpers def without_resynchronize page.driver.options [: resynchronize] = false yield page.driver.options [: resynchronize] = true end end World (Capybara :: DSL, ajudantes)
Aqui você tem o código.

3. Execute o projeto


É hora de execute nosso projeto para testar o Youtube.

Passo 1
Abrimos um terminal ou cmd e vamos para a pasta Testing-Selenium, onde está todo o nosso projeto criado anteriormente.

Passo 2
Escrevemos pepino e damos entrada, Cucumber procurará na pasta de recursos os arquivos .feature (neste caso, há apenas 1) e as etapas (arquivos Ruby) desses recursos. Se estiver correto, veremos como o navegador se abre e começa a executar os testes. Caso você não tenha as funções Ruby definidas, aparecerá uma tela indicando que as etapas não estão definidas, como na imagem a seguir:

Se tudo der certo, você acabará tendo uma tela como a seguinte:

ObservaçãoSe aparecer um aviso e não aparecer nenhuma cor no Windows, visite este repositório.

Se você quiser um teste mais rápido, você precisará de um navegador sem interface gráfica (Phantomjs) e Poltergeist que é um driver para Capybara (igual ao Selenium), mas que se conecta com Phantomjs.

  • Instale o Poltergeist:
     poltergeist de instalação de joia
  • Instale Phantomjs:
     gem install phantomjs

Caso queira baixar todo o projeto estou anexando um zip (lembre-se de que o teste foi aprovado no Ubuntu):

Testing-Selenium.zip 1.71K 167 Downloads

Gostou e ajudou este tutorial?Você pode recompensar o autor pressionando este botão para dar a ele um ponto positivo
wave wave wave wave wave