A automação de testes em uma aplicação web é fundamental para garantir a qualidade do software. Uma parte comum dos testes envolve a automação do processo de login, e o Selenium é uma ferramenta poderosa que nos permite fazer isso de forma eficiente.
Neste post, vamos explorar como automatizar o login em uma aplicação web com Python e Selenium, além de criar testes para verificar se o processo de login funciona corretamente.
1. Primeira Etapa: Configurando o ambiente
Para seguirmos este tutorial corretamente, certifique-se de que você tenha o Python (Na versão 3.8.7 no mínimo) e o Selenium instalados no seu sistema. Você também precisa do WebDriver apropriado para o navegador que deseja automatizar. Neste exemplo estaremos utilizando o Firefox, então verifique se possui o browser instalado localmente.
Para a instalação do selenium na versão correta utilizando o python em seu sistema, utilize o comando:
pip install selenium==4.9.1
2. Segunda Etapa: Criando um cenário de automação
Nesta etapa estarei apresentando uma automação simples, onde iremos primeiramente iniciar o nosso código em Python, e construindo os blocos necessários para que o Selenium acesse a nossa aplicação desejada e realize os procedimentos.
Nossa situação: Supondo que estamos trabalhando como desenvolvedores para o Github, e a tarefa passada foi a de implementar testes para garantir que o painel de login esteja funcionando corretamente, para isso temos credenciais de teste que serão utilizadas nesse percurso.
Estaremos então utilizando o painel de login do Github para performar nossa automação, e a ideia será apenas testar se o painel de login funciona como deveria utilizando as nossas próprias credenciais para isso.
2.1 Iniciando com Selenium
Vamos dar os nossos primeiros passos com o selenium configurando o ambiente para abrir a página de login do Github, para isso crie um arquivo chamado `bot.py` e coloque o seguinte código:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
# Inicializa uma instância do webdriver
driver = webdriver.Firefox()
Obs: Webdriver será o nosso driver responsável pelas operações no navegador e o Keys será usado para enviar teclas especiais como: Return, Backspace, Del, etc..
E por fim, a variável driver será a instância do nosso webdriver para realizarmos as operações seguintes.
2.2 Acessando a URL de login
Já importamos o que era necessário, e agora iremos adicionar ao nosso código a configuração para ele abrir o nosso navegador automatizado na página de login do Github
# Acessa a página de login
driver.get("https://github.com/login")
Ao executarmos a aplicação neste momento, iremos verificar que o nosso navegador irá abrir a página de login do Github
2.3 Identificando os campos de usuário e senha
Nesta etapa estaremos utilizando a página do Github para identificar os campos de usuário e senha do Github através do navegador e usando o console de desenvolvedor conseguimos verificar as propriedades desse input. Ao realizarmos essa operação podemos obter o ID único dos inputs no HTML
Localizando o campo de usuário:
Localizando o campo de senha:
2.4 Enviando o formulário de Login
No passo anterior verificamos que o id do nosso campo de login é “login_field” e o campo de senha é “password”. Com essa informação iremos alimentar nosso código para preencher os campos de login existentes e enviar a nossa requisição com o Keys.
# Define as variáveis de usuário e senha que identificamos através do ID
username_field = driver.find_element('id', 'login_field')
password_field = driver.find_element('id', 'password')
# Envia os dados para o formulário
username_field.send_keys('usuario') # Substitua usuario pelo seu usuário do Github
password_field.send_keys('senha') # Substitua senha por sua senha do Github
# Envia o formulário com o Return
password_field.send_keys(Keys.RETURN)
Ao executarmos nosso código agora ele irá preencher e autenticar em nossa conta caso os dados estejam corretos.
3. Terceira Etapa: Adicionando testes ao código
Após completarmos todos os passos anteriores, confirmamos que nosso código está automatizando o processo de login no GitHub. Agora, vamos aprimorar ainda mais o código, adicionando testes.
Vamos criar testes que verificam se o login é bem-sucedido, nesse caso iremos apenas validar se uma mensagem "Top Repositories" existe no conteúdo do site. Esta mensagem está presente no dashboard no canto esquerdo mostrando os seus principais repositórios. Este é um teste um tanto simples, porém podemos elaborar melhor de acordo com nossa necessidade.
Código completo:
import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
class TestLogin(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
self.driver.get("https://github.com/login")
def test_login_success(self):
# Define as variáveis de usuário e senha que identificamos através do ID
username_field = self.driver.find_element('id', 'login_field')
password_field = self.driver.find_element('id', 'password')
# Envia os dados para o formulário
username_field.send_keys('usuario')
password_field.send_keys('senha')
# Envia o formulário com o Return
password_field.send_keys(Keys.RETURN)
# Verifica se a mensagem "Top Repositories" existe na página atual
self.assertIn('Top Repositories', self.driver.page_source)
def tearDown(self):
self.driver.quit()
if __name__ == '__main__':
unittest.main()
Ao completar todos os passos anteriores você poderá testar o último código com os testes integrados para verificar se o login foi concluído com sucesso. Se tudo ocorrer bem você receberá um output parecido com este: