Curso Gratuito de Automação de Testes Para Iniciantes

Disponível no
Youtube

 

Automação de Testes Com Selenium e Python (consumindo dados da API)

python-selenium

Automação de Testes Com Selenium e Python (consumindo dados da API)

Neste post, vou compartilhar uma forma de consumir dados de uma API e usá-los em um processo de automação. Usarei o Selenium WebDriver juntamente com a linguagem Python. Os dados serão requisitados da API disponibilizada pelo Github.

 

O Selenium é uma ferramenta utilizada para realizar testes funcionais de aplicações web. Dentre as suas versões, existe o Selenium WebDriver que permite fazer chamadas diretas ao navegador, mas para isso precisamos do driver específico. Para o projeto apresentado neste post, iremos usar o ChromeDriver para realizarmos o processo usando o navegador Google Chrome. O WebDriver suporta as seguintes linguagens: Java, C#, Python, Ruby, Perl, PHP e JavaScript. Para mais informações a respeito do Selenium, você pode acessar o site oficial clicando aqui.

 

O Python dispensa apresentações: é uma das linguagens de programação mais populares atualmente. É uma linguagem de alto nível, interpretada, de script, imperativa, orientada a objetos, funcional, de tipagem dinâmica e forte.

 

O Github é uma plataforma de hospedagem de código fonte com controle de versão usando o Git. Ela permite que seus usuários contribuam em projetos privados ou de código aberto. O Github disponibiliza uma API (Application Programming Interface ou Interface de Programação de Aplicativos) que permite a consulta sobre informações dos seus usuários e projetos.

 

Para fins de teste, desenvolvi uma aplicação web que simula um cadastro de projetos de determinado usuário do Github, e hospedei usando a ferramenta Github Pages, que permite colocar online projetos web usando HTML, CSS e Javascript. Os dados são inseridos em um formulário e posteriormente listados em uma tabela. A aplicação pode ser acessada clicando aqui. A seguir, seguem imagens que ilustram as interfaces da aplicação.

 

Não foi fornecido texto alternativo para esta imagem

 

Não foi fornecido texto alternativo para esta imagem

 

Agora que temos uma aplicação para simular os cadastros, vamos desenvolver a automação. Para criar o projeto, usei o PyCharm Community 2019.2.1, IDE de desenvolvimento criada pela JetBrains para desenvolvimento usando a linguagem Python. Como requisitos, também é necessário o Python na versão 3.7 e o Pip, sistema de gerenciamento de pacotes do Python, na versão 19.0.3.

 

Para criar um projeto no PyCharm é muito simples. Basta clicar em File > New Project e será exibida a tela abaixo. Após nomear o projeto, é só clicar no botão Create.

 

Não foi fornecido texto alternativo para esta imagem

 

O projeto irá precisar da instalação de dois pacotes: requests e selenium. Para instalá-los, bastar executar os comandos abaixo no terminal:

pip install requests

pip install selenium

 

Para este projeto, foram criados três scripts:

  • github.py: este arquivo possui a classe com métodos que vão realizar a requisição para a API do Github e disponibilizar os projetos do usuário.
  • automation.py: este arquivo possui a classe com os métodos que vão realizar a automação, recebendo os projetos e inserindo na aplicação web desenvolvida.
  • main.py: este arquivo será responsável por instanciar as classes citadas anteriormente e chamar os devidos métodos para que a automação ocorra.

 

O script github.py possui uma classe chamada Github. Esta possui um construtor que necessita do parâmetro user (usuário do Github). A classe possui mais três métodos:

  • get_repositories_github: método responsável por requisitar os dados de um usuário do Github. Isso é feito através do método get, encapsulado no pacote requests, importado no início do script.

 

Não foi fornecido texto alternativo para esta imagem

 

  • clean_repostitory: método responsável por extrair apenas as informações relevantes para o cadastro. Esta método é necessário pois a API do Github retorna um JSON enorme, com vários atributos.

 

Não foi fornecido texto alternativo para esta imagem

 

  • get_formatted_repositories: método responsável por retornar uma lista com os dados formatados do usuário, chamando os dois métodos anteriores. Repare que usei duas features muito interesantes do Python: o map, função que retorna uma lista conforme a condição passada por parâmetro, e o lamba, função anônima que permite simplificar o código. Para mais detalhes e exemplos, acesse a documentação oficial do Python.

 

Não foi fornecido texto alternativo para esta imagem

 

O script automation.py possui uma classe chamada Automation. Esta inicia importando o Selenium WebDriver. Possui também um construtor que instancia o navegador através do webdriver e seta os valores dos caminhos do elementos da página de cadastro dos projetos usando o XPath de cada elemento. Para saber mais sobre o XPath, recomendo o vídeo do Júlio de Lima no Youtube, que pode ser acessado clicando aqui.

 

Não foi fornecido texto alternativo para esta imagem

 

Esta classe possui também os métodos responsáveis pela automação que vai ocorrer na página, uma vez que já temos os dados do Github.

  • add_projects: este é o primeiro método a ser chamado. Recebe como parâmetro os projetos. Inicialmente, chama o método que abre o navegador. Após isso, realiza o processo de adição de projetos:
    1. clicar no botão para abrir o modal com o formulário de cadastro
    2. preencher o formulário
    3. clicar no botão para adicionar o projeto na tabela.

 

Não foi fornecido texto alternativo para esta imagem

 

Os demais métodos que auxiliam este serão vistos mais a frente quando a classe completa for exibida.

E por fim, o script main.py, que é responsável por instanciar as duas classes citadas anteriormente e invocar os devidos métodos para o processo de automação.

Abaixo, são exibidos os três scripts de forma completa.

 

 

main.py

Não foi fornecido texto alternativo para esta imagem

 

 

github.py

Não foi fornecido texto alternativo para esta imagem

 

 

automation.py

Não foi fornecido texto alternativo para esta imagem

 

O projeto está quase pronto. Falta apenas incluir o driver do navegador no projeto. Para isso, é só baixar do site oficial a versão compatível com o navegador utilizado e mover para a pasta do projeto. A seguir, uma imagem que ilustra a estrutura de arquivos do projeto.

 

Não foi fornecido texto alternativo para esta imagem

 

Para iniciar o processo de automação, basta executar o script main.py, que pode ser feito da seguinte maneira: abra o terminal dentro da pasta do projeto e execute o comando python main.py. Após o processo de automação, a página web ficará preenchida com os projetos do usuário, conforme ilustrado abaixo.

 

Não foi fornecido texto alternativo para esta imagem

 

Caso queira visualizar os seus projetos do Github, é só inserir como parâmetro o seu usuário no script main.py na linha onde a classe Github é instanciada.

 

Espero que este post tenha sido útil e que te ajude em situações onde vários dados precisem ser extraídos de determinada fonte e usados em outra aplicação. Abaixo listo os links do projetos que subi na minha página do Github (que inclusive são listados na automação já ;D). Fique à vontade para contribuir ou baixar para testar no seu computador.

Grande abraço!

Aplicação web: https://github.com/rbalves/app-automacao-selenium-api-github

Projeto de automação: https://github.com/rbalves/automacao-selenium-python-api-github

Referências

· Selenium: https://www.selenium.dev/

· Python: https://www.python.org/

· Github: https://github.com/

· Github Pages: https://pages.github.com/