CodeGym /Curso Java /Python SELF PT /Configuração de script para automatizar uma sequência de ...

Configuração de script para automatizar uma sequência de ações no site

Python SELF PT
Nível 37 , Lição 4
Disponível

1. Cenário de ações e sua sequência

Quando começamos a planejar um script de automação, é importante entender que, como nos contos de fadas, precisamos ir do simples ao complexo. Imagine que seu script seja um herói que embarca em uma jornada pelas páginas de um site. Cada passo é cuidadosamente planejado para não sair do caminho.

Criando um roteiro passo a passo de automação

O início é sempre o plano. O que você quer alcançar? Carregar uma página, preencher um formulário, clicar num botão? Como dizem: "Quem não planeja está planejando falhar". A gente não quer falhar, então vamos listar os passos previstos.

Python

from selenium import webdriver
from selenium.webdriver.common.by import By

# Criando uma instância do driver. Use o driver compatível com seu navegador.
driver = webdriver.Chrome()

# Abrindo a página
driver.get('https://example.com/login')

# Preenchendo o login
driver.find_element(By.NAME, 'username').send_keys('meu_usuario')

# Preenchendo a senha
driver.find_element(By.NAME, 'password').send_keys('minha_senha_secreta')

# Clicando no botão de login
driver.find_element(By.ID, 'login-button').click()

E assim ajustamos o ritmo do nosso "baile". Cada passo no roteiro é executado sequencialmente para que o script se movimente com facilidade pelo site.

Log de execução dos passos

Como todo herói que se preza, nosso script deve deixar rastros para sabermos onde ele foi e o que fez. Logging é como o diário do seu script. Ele ajuda a rastrear os passos executados e identificar erros caso algo dê errado.

Python

import logging

# Configurando logging
logging.basicConfig(level=logging.INFO)

# Exemplo de logging de uma ação
logging.info("Abrindo a página de login")
driver.get('https://example.com/login')

O logging não ajuda apenas na depuração, mas também proporciona tranquilidade ao saber que o script está executando cada passo conforme planejado. Se algo der errado, você poderá voltar e verificar em qual ponto houve o problema.

2. Organização do código para leitura e modificação

Quando o roteiro fica mais complexo, é importante manter o código organizado. Imagine uma celebração com muitos convidados e pratos: se tudo não estiver no lugar, vira um caos. No nosso caso, é o caos no código.

Configurando a estrutura do código

Para fazer alterações no código de forma mais fácil, ele precisa estar bem organizado. Como separar meias em pares, precisamos categorizar tudo. Use funções para separar ações repetitivas em blocos independentes.

Python

def login_to_site(driver, username, password):
    logging.info("Inserindo o login")
    driver.find_element(By.NAME, 'username').send_keys(username)
    
    logging.info("Inserindo a senha")
    driver.find_element(By.NAME, 'password').send_keys(password)
    
    logging.info("Clicando no botão de login")
    driver.find_element(By.ID, 'login-button').click()

# Usando a função para fazer login
login_to_site(driver, 'meu_usuario', 'minha_senha_secreta')

Usar funções deixa o código mais organizado e facilita as alterações, como no caso de mudar o ID do botão de login – você só precisará alterar em uma função, em vez de mudar em todo o código.

3. Exemplo: Automatização do processo de compra em um site

Vamos imaginar que precisamos configurar a automação do processo de compra em um site, incluindo os seguintes passos:

  1. Abrir o site e fazer login.
  2. Acessar o catálogo de produtos e adicionar um produto ao carrinho.
  3. Acessar o carrinho e finalizar a compra.
Python

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# Inicializando o driver com configurações
def initialize_driver():
    driver = webdriver.Chrome()
    driver.implicitly_wait(10)  # Espera implícita
    return driver

# Função para login na conta
def login(driver, username, password):
    driver.get("https://example.com")
    driver.find_element_by_id("username").send_keys(username)
    driver.find_element_by_id("password").send_keys(password)
    driver.find_element_by_id("login_button").click()

# Função para acessar o catálogo e adicionar produto ao carrinho
def add_product_to_cart(driver):
    driver.get("https://example.com/catalog")
    product = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CLASS_NAME, "product_item"))
    )
    product.click()

    add_to_cart_button = driver.find_element_by_id("add_to_cart")
    add_to_cart_button.click()

# Função para acessar o carrinho e finalizar compra
def checkout(driver):
    driver.get("https://example.com/cart")
    checkout_button = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.ID, "checkout"))
    )
    checkout_button.click()

# Função para encerrar o driver
def close_driver(driver):
    driver.quit()

# Script principal para executar a sequência de ações
def main():
    # Configuração dos dados
    username = "meu_usuario"
    password = "minha_senha"
    
    # Inicialização do driver
    driver = initialize_driver()
    
    try:
        # Fazendo login no site
        login(driver, username, password)
        
        # Acessando catálogo e adicionando produto ao carrinho
        add_product_to_cart(driver)
        
        # Acessando carrinho e finalizando compra
        checkout(driver)
    
    finally:
        # Fechando o driver
        close_driver(driver)

# Rodando o script principal
main()

Explicação das funções

  1. initialize_driver() — função para inicializar o web driver. Ela configura uma espera implícita para todos os elementos e retorna o objeto do driver.
  2. login() — função para realizar login no site. Ela recebe os parâmetros username e password, que são usados para preencher o formulário de login e clicar no botão de login.
  3. add_product_to_cart() — função para acessar o catálogo, selecionar um produto e adicioná-lo ao carrinho.
  4. checkout() — função para acessar o carrinho e finalizar a compra.
  5. close_driver() — função para encerrar o uso do driver.
  6. main() — função principal, que gerencia a sequência de ações. Nela ocorre a chamada de todas as etapas, além da configuração dos dados de login.

Benefícios desse approach

  1. Clareza — cada etapa está organizada em funções separadas, o que torna o código mais fácil de entender.
  2. Reutilização — funções individuais podem ser usadas independentemente do script principal, para realizar ações específicas no site.
  3. Facilidade de teste — cada etapa pode ser testada separadamente, garantindo que tudo funciona corretamente.
  4. Flexibilidade — caso necessário, é possível adicionar outras funções ou mudar a ordem das chamadas no main().
1
Опрос
Otimização de scripts Selenium,  37 уровень,  4 лекция
недоступен
Otimização de scripts Selenium
Otimização de scripts Selenium
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION