Lab 3.1: Script Selenium custon
Nesse lab, vamos fazer a orquestração de uma automação em Selenium no BotCity Maestro. Essa automação simples acessa o site Practice Test Automation
, faz o login e o logout no sistema.
Projeto: Practice Test Automation
Crie uma pasta com o nome de bot-selenium
, nela teremos os seguintes arquivos:
requirements.txt
No arquivo requirements.txt
definimos as dependências necessárias para a automação:
# Configuração para usar esta versão específica do pacote
selenium==4.10.0
# Incluindo a dependência BotCity Maestro SDK para orquestrar
botcity-maestro-sdk
# Incluindo pacote para gestão de driver web
webdriver-manager
geckodriver.exe
Para poder trabalhar com automações web, precisamos usar o WebDriver correspondente ao navegador que está sendo utilizado na automação.
Utilizaremos o Firefox para essa automação, você pode baixar o GeckoDriver
através deste link.
Importante
Certifique-se de selecionar o WebDriver correto de acordo com seu sistema operacional, clique em show all assets
para verificar quais estão disponíveis.
bot.py
No arquivo bot.py
teremos o seguinte código Selenium:
from botcity.maestro import *
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.firefox.service import Service
BotMaestroSDK.RAISE_NOT_CONNECTED = False
def main():
# Instancia do Orquestrador
maestro = BotMaestroSDK.from_sys_args()
execution = maestro.get_execution()
try:
# Cria uma instância do Navegador
bot = webdriver.Firefox()
# Acessa página Practice Test Automation
bot.get("https://practicetestautomation.com/practice-test-login/")
username = "student"
password = "Password123"
# Busca pelo elemento input de nome de usuário
input_username = bot.find_element(By.ID, "username")
# Ação de digitar
input_username.send_keys(username)
# Busca pelo elemento input de senha
input_password = bot.find_element(By.ID, "password")
# Ação de digitar
input_password.send_keys(password)
# Busca pelo elemento botão submit
input_button = bot.find_element(By.ID, "submit")
# Ação de clicar
input_button.click()
# Aguarda 3 segundos para garantir que carregou a página com resultado
sleep(3)
# Busca pela confirmação de login
logged = bot.find_element(By.CSS_SELECTOR, ".post-title")
# Imprime o texto da confirmação
print(logged.text)
# Busca pelo elemento botão log out
logout = bot.find_element(By.CSS_SELECTOR, ".wp-block-button__link")
# Ação de clicar
logout.click()
# Busca pelo titulo login para garantir que fez o logout
bot.find_element(By.CSS_SELECTOR, "#login > h2:nth-child(1)")
# Define status e mensagem de finalização da tarefa com sucesso
finish_status = AutomationTaskFinishStatus.SUCCESS
finish_message = "Tarefa bot-selenium finalizada com sucesso"
except Exception as ex:
# Busca pelo elemento de mensagem de erro
error_alert = bot.find_element(By.ID, "error")
# print(error_alert.text) remove
# print(ex) remove
# Grava uma captura de tela
bot.save_screenshot("captura.png")
# Define quais informações extras
# serão carregadas no BotCity Maestro
tags = {
"username": username,
"password": password,
"error": error_alert.text
}
# Registrando o erro
maestro.error(
task_id=execution.task_id,
exception=ex,
tags=tags,
screenshot="captura.png"
)
# Define status de finalização da tarefa com falha
finish_status = AutomationTaskFinishStatus.FAILED
finish_message = f"Tarefa bot-selenium finalizada com falha: {error_alert.text}"
finally:
# Finaliza fechando o navegador
bot.quit()
# Finaliza tarefa com o BotMaestro
maestro.finish_task(
task_id=execution.task_id,
status=finish_status,
message=finish_message
)
# Imprime mensagem de finalização
print("Finally")
if __name__ == "__main__":
main()
Estrutura de arquivos
A estrutura ficará dessa forma:
.bot-selenium
├── bot.py
├── geckodriver.exe
└── requirements.txt
Dica
É possivel fazer o download do projeto completo, com arquivos adicionais de build
no GitHub neste link.
Testando seu projeto localmente
Para testar seu projeto localmente, vamos criar um ambiente virtual para instalar as dependências do Python utilizadas no projeto.
Criando o ambiente virtual
Utilizando o terminal de comando, acesse a pasta do projeto que você criou. A partir dessa pasta, abra o terminal de comando e execute o comando abaixo para criar um ambiente virtual:
python -m venv venv
Ativando o ambiente virtual
Após criar o ambiente virtual, você precisará ativá-lo. Para isso, utilize o comando abaixo:
venv\Scripts\activate
Instalando as dependências do projeto
Utilizando o terminal de comando, execute o comando abaixo para instalar as dependências definidas no arquivo requirements.txt
:
python -m pip install --upgrade -r requirements.txt
Este comando vai produzir uma saída grande referente a instalação de todas as dependências. Assim que este processo terminar, seu projeto estará pronto para ser executado.
Rodando seu robô
Ainda utilizando o terminal aberto dentro da pasta do projeto, você pode executar sua automação com o seguinte comando:
python bot.py
Logged In Successfully
Finally