Skip to main content

Biblioteca para automatização web (Chrome, Edge, Firefox) e manipulação de arquivos no SO.

Project description

AutomaWeb 🕸️📁

AutomaWeb é uma biblioteca Python poderosa e simplificada para automação de tarefas na web e gerenciamento de arquivos no sistema operacional. Construída sobre o Selenium e bibliotecas nativas do Python, ela remove a complexidade do código boilerplate, permitindo que você crie robôs e scripts de automação de forma rápida, legível e eficiente.

🚀 Instalação

Você pode instalar o AutomaWeb facilmente através do gerenciador de pacotes pip:

pip install automaweb

Nota: Certifique-se de ter os navegadores (Chrome, Edge ou Firefox) instalados em sua máquina. O Selenium Manager moderno (incluído no Selenium 4+) lidará com o download automático dos drivers (como o ChromeDriver) para você.


💡 Visão Geral e Recursos

A biblioteca é dividida em duas frentes principais:

  1. Automação Web (Navegador): Controle simplificado de navegadores (Chrome, Edge, Firefox), com métodos prontos para clicar, digitar, esperar elementos, gerenciar abas, lidar com iframes e até salvar/carregar cookies. Ele já inclui verificações embutidas e tratamento de "stuns" (tempos de espera entre ações).
  2. Gerenciamento de Arquivos e Pastas: Funções utilitárias diretas para criar pastas, mover, copiar, renomear, excluir, compactar/descompactar (ZIP), buscar arquivos mais recentes e interagir com o usuário via interface gráfica (Tkinter) para seleção de caminhos.

🛠️ Exemplos de Uso

1. Automação Web Básica

from automaweb import Navegador

# Inicializa o navegador Chrome com um tempo de espera (stun) de 1 segundo entre ações
nav = Navegador(tempo_stun=1, navegador="chrome")

# Abre o navegador (pode usar headless=True para rodar em segundo plano)
nav.abrir_driver(headless=False)

try:
    # Acessa um site
    nav.abrir_url("https://www.google.com")
    
    # Digita uma pesquisa e clica no botão (XPaths fictícios para exemplo)
    nav.digitar("//textarea[@title='Pesquisar']", "Automação com Python")
    nav.clicar("//input[@value='Pesquisa Google']")
    
    # Tira um print da tela
    nav.tirar_screenshot("resultado_pesquisa")

finally:
    # Garante que o navegador será fechado
    nav.fechar_driver()

2. Manipulação de Arquivos e Pastas

import os
from automaweb import criar_pasta, mover_arquivo, obter_arquivo_mais_recente

caminho_downloads = f"{os.getlogin()}/Downloads"
pasta_destino = f"{caminho_downloads}/Relatorios_Processados"

# Cria a pasta se ela não existir
criar_pasta(pasta_destino)

# Pega o último PDF baixado na pasta de downloads
ultimo_pdf = obter_arquivo_mais_recente(caminho_downloads, extensao=".pdf")

if ultimo_pdf:
    # Move o arquivo para a nova pasta
    mover_arquivo(ultimo_pdf, f"{pasta_destino}/relatorio_final.pdf")
    print("Arquivo processado com sucesso!")

🎯 Guia Definitivo: Dominando o XPath

O XPath (XML Path Language) é a espinha dorsal da automação web com o AutomaWeb. Ele funciona como um "endereço" ou "caminho" para encontrar qualquer elemento dentro da estrutura HTML de uma página.

Como encontrar o XPath de um elemento?

  1. Abra o navegador e acesse a página desejada.
  2. Clique com o botão direito no elemento (botão, campo de texto) e selecione Inspecionar.
  3. O painel de Ferramentas do Desenvolvedor (DevTools) será aberto, destacando o código HTML do elemento.
  4. Pressione Ctrl + F (ou Cmd + F) no DevTools para abrir a barra de busca e testar seus XPaths em tempo real.

Regra de Ouro: Fuja do XPath Absoluto!

Absoluto: /html/body/div[1]/div/div[2]/form/input Isso quebra se o dono do site adicionar um único elemento novo na página.

Relativo: //input[@id='email'] Isso busca o elemento em qualquer lugar da página que atenda aos critérios, sendo muito mais resistente a mudanças.

Sintaxe Básica do XPath Relativo

A estrutura padrão é: //tag[@atributo='valor']

  • //: Busca em qualquer lugar do documento.
  • tag: O tipo de elemento (input, button, div, a, * para qualquer tag).
  • @atributo: O nome do atributo HTML (id, class, name, type).
  • 'valor': O valor exato do atributo.

Exemplos:

  • //input[@id='usuario'] (Encontra um input com o id "usuario")
  • //button[@type='submit'] (Encontra um botão de envio)
  • //*[@name='senha'] (Encontra qualquer elemento com o name "senha")

Usos Avançados e Dicas Profissionais

O poder real do XPath está nas suas funções dinâmicas. Aqui estão as técnicas essenciais para automações robustas:

1. Selecionando pelo Texto (text())

Muitas vezes, botões ou links não têm IDs ou classes claras, mas têm um texto visível.

  • Sintaxe: //tag[text()='Texto Exato']
  • Exemplo: //button[text()='Fazer Login']
  • Uso no AutomaWeb: nav.clicar("//button[text()='Fazer Login']")

2. Busca por Texto Parcial (contains())

Ideal para quando uma classe tem vários nomes (ex: class="btn btn-primary active") ou o texto muda ligeiramente (ex: "Bem-vindo, João").

  • Sintaxe: //tag[contains(@atributo, 'parte_do_valor')]
  • Sintaxe (Texto): //tag[contains(text(), 'parte_do_texto')]
  • Exemplos:
  • //div[contains(@class, 'btn-primary')] (Pega o botão mesmo que tenha outras classes)
  • //a[contains(text(), 'Esqueci minha')] (Clica no link "Esqueci minha senha")

3. Múltiplas Condições (and / or)

Quando um único atributo não é suficiente para identificar um elemento unicamente.

  • Sintaxe: //tag[@attr1='val1' and @attr2='val2']
  • Exemplo: //input[@type='text' and @placeholder='Digite seu CPF']

4. Navegando pela Árvore (Eixos XPath)

Às vezes, o elemento que você quer clicar não tem identificadores, mas o "pai" ou "irmão" dele tem.

  • Subindo para o elemento Pai (/.. ou parent::) Você encontra um texto, mas quer clicar na caixa inteira que o envolve.

  • //span[text()='Opção 1']/..

  • Buscando o próximo elemento (Irmão - following-sibling::) Você encontra a label "Nome:", e quer o campo de input que vem logo em seguida.

  • //label[text()='Nome:']/following-sibling::input

Resumo de Estratégia XPath para Automações

Sempre tente usar identificadores na seguinte ordem de prioridade para evitar que seu robô quebre facilmente:

  1. @id (Único e imutável na maioria das vezes).
  2. @name (Geralmente único em formulários).
  3. text() (Se o botão tiver um texto fixo).
  4. contains(@class, '...') (Classes específicas).
  5. Navegação a partir de um pai/irmão estável.

🤝 Contribuindo

Contribuições são bem-vindas! Se você tiver ideias para melhorar a biblioteca, adicionar novos recursos ao Navegador ou expandir os utilitários de sistema, sinta-se à vontade para abrir uma Issue ou enviar um Pull Request no repositório oficial.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

automaweb-1.0.1.tar.gz (18.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

automaweb-1.0.1-py3-none-any.whl (16.4 kB view details)

Uploaded Python 3

File details

Details for the file automaweb-1.0.1.tar.gz.

File metadata

  • Download URL: automaweb-1.0.1.tar.gz
  • Upload date:
  • Size: 18.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for automaweb-1.0.1.tar.gz
Algorithm Hash digest
SHA256 3614d9ca097eaccdd3e0ab16fee91d2fcdafe5f81279ac7525152f25615df28d
MD5 eb5cd968fd48d1cac91d015c6043e1fb
BLAKE2b-256 9bbcbf4a5dde6dedfe5273783bac428dd6cb7aa8481c30bcfc18ab36549bcc6f

See more details on using hashes here.

File details

Details for the file automaweb-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: automaweb-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 16.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for automaweb-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 43da31c6b0f992cca5928b2c11647d2e6d4cf8fc6b0661ee26992349265a77b9
MD5 45b50ec98601df07d13225f1ec2a10e7
BLAKE2b-256 8508ad5e040299824be043c934b2477ccde087aadb3e7a9e0443a11c63671893

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page