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:

Gabriel Hinz
Engenheiro DevOps

Gabriel faz parte da nossa equipe de sentinelas dedicados para transformar o mundo digital.

Instagram