Para esse artigo você precisa ter:
- Conhecimento básico de programação
- Conhecimento básico da biblioteca Selenium
Qualquer dúvida, comente!
Robotic Process Automation (RPA) visa implementar soluções com automação robótica de processos para livrar pessoas de trabalhos repetitivos, trazendo mais agilidade e segurança para os negócios. Esses processos podem acontecer interagindo com aplicativos de computador como sistemas Customer Relationship Management (CRM), Enterprise Resource Planning (ERP) ou mesmo navegadores web, acessando portais comumente utilizados pelas organizações.
Quando entramos no contexto de RPA, temos diversas ferramentas diferentes para atender nossas demandas, sendo elas plataformas “no-code” ou “low-code” e ainda existe a possibilidade de utilizar código em alguma linguagem de programação para criar sua automação. Nesse artigo eu apresento um site para praticar suas automações do tipo Web, utilizando código Python e interagindo com navegadores diretamente com o Document Object Model (DOM) das páginas.
Uma das formas de melhorar a habilidade de programar é praticando. Dentro da área de RPA não é diferente, precisamos aprender sobre como os processos funcionam e assim conseguir desenvolver um programa capaz de executar todos os passos necessários para realizar a tarefa proposta com sucesso.
Practice Test Automation
Nesse site temos opções de fazer testes com nossa automação em contextos como:
- Test Login Page: preenchendo o login da página utilizando as credenciais disponíveis, podendo testar casos de login válido ou inválido
- Test Exceptions: tratamento de exceções mais comuns com base na ferramenta Selenium.
Abordando o primeiro caso, temos a possibilidade de preencher dois campos de texto, referentes a username e password e clicar um botão submit. Dependendo de como os campos foram preenchidos, teremos como respostas diferentes ao clicar no botão. A partir dessas respostas poderemos avaliar se a automação está passando pelas etapas corretas.
Como fica em código?
É importante verificar se todas as dependências necessárias estão instaladas na máquina para executar o código.
Para esse projeto utilizaremos as seguintes bibliotecas, nas versões fixadas:
selenium==4.10.0
webdriver-manager==3.8.5
O comando de instalação no terminal fica dessa forma:
python -m pip install selenium==4.10.0 webdriver-manager==3.8.5
Criaremos um arquivo python com o nome de bot.py, nele descreveremos os passos para preencher o formulário em forma de instruções.
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.firefox.service import Service
def main():
try:
# Define o caminho do WebDriver executável do Firefox
service = Service(executable_path=r"geckodriver.exe")
# Cria uma instância do Navegador
bot = webdriver.Firefox(service=service)
# Define a URL da página Practice Test Automation na área de login
url = "https://practicetestautomation.com/practice-test-login/"
# Acessa página definida
bot.get(url)
# Busca pelo elemento input de nome de usuário
elemento_campo_usuario = bot.find_element(
by=By.ID,
value="username"
)
# Ação de digitar no elemento
elemento_campo_usuario.send_keys("student")
# Busca pelo elemento input de senha
elemento_campo_senha = bot.find_element(
by=By.ID,
value="password"
)
# Ação de digitar no elemento
elemento_campo_senha.send_keys("Password123")
# Busca pelo elemento botão submit
elemento_botao = bot.find_element(
by=By.ID,
value="submit"
)
# Ação de clicar
elemento_botao.click()
# Aguarda 3 segundos para garantir
# que carregou a página com resultado
sleep(3)
# Busca pela confirmação de login
elemento_logado = bot.find_element(
by=By.CSS_SELECTOR,
value=".post-title"
)
# Imprime o texto da confirmação
print(elemento_logado.text)
# Busca pelo elemento botão log out
elemento_deslogado = bot.find_element(
by=By.CSS_SELECTOR,
value=".wp-block-button__link"
)
# Ação de clicar no elemento
elemento_deslogado.click()
except Exception as ex:
# Busca pelo elemento de mensagem de erro
error_alert = bot.find_element(
by=By.ID,
value="error"
)
# Imprime a mensagem de erro
print(error_alert.text)
finally:
# Finaliza fechando o navegador
bot.quit()
# Imprime mensagem de finalização
print("Finally")
if __name__ == "__main__":
main()
Ao executar esse código, o resultado deve ser a seguinte:
PS C:\practice_test_automation> python .\bot.py
Logged In Successfully
Finally
Nesse caso, ocorreu tudo como esperado, a automação preencheu os campos com os valores corretos e clicou no botão de login, acessando a página de confirmação e depois clicou em logout para sair da página.
Para testar outras validações, vamos alterar inicialmente o preenchimento do campo de nome de usuário, colocando um valor inválido.
# Ação de digitar no elemento
# elemento_campo_usuario.send_keys("student")
# Valor incorreto para teste de erro
elemento_campo_usuario.send_keys("estudante")
Esse será o resultado ao executar:
PS C:\practice_test_automation> python .\bot.py
Your username is invalid!
Finally
Conclusão
Podemos notar que o site oferece algumas formas de busca e interação com os elementos da DOM. Como sugestão, tente fazer outras alterações como mudar a senha que retorna outra mensagem de validação, além da possibilidade de procurar por outros elementos e interagir com eles.
Enjoy!