Skip to main content

Auto-recuperação de seletores DOM para testes web

Project description

DOM-Heal

Auto-recuperação de seletores DOM para testes web automatizados

PyPI - Python Version License Status

DOM-Heal é uma biblioteca de self-healing para automação de testes web. Ela identifica seletores quebrados no DOM, faz o ajuste inteligente e atualiza automaticamente seu arquivo de elementos, minimizando falhas causadas por mudanças no front-end. Compatível com qualquer framework de teste (Cypress, Selenium, Robot Framework, Playwright, etc).


✨ Principais Funcionalidades

  • Self-healing de seletores: Ajusta e recupera seletores (id, name, class, xpath) automaticamente usando algoritmos fuzzy.
  • Matching inteligente: Aplica boosts e estratégias avançadas para encontrar o elemento mais parecido possível.
  • Log detalhado: Gera um arquivo extra (ElementosAlterados.json) mostrando todas as alterações feitas.
  • Atualização automática: O JSON original de seletores é atualizado de acordo com o DOM atual da página.
  • Independente de framework: Funciona para qualquer ferramenta de automação que utilize JSON para armazenamento de elementos.
  • Uso por página: Cada execução é feita para uma página específica, garantindo máxima precisão.

🚀 Instalação

Pré-requisitos: Python 3.7+ e Google Chrome

pip install dom-heal

⚡ Como Usar

1. Crie seu arquivo de seletores (um JSON por página!)

Recomenda-se criar um arquivo JSON para cada página que deseja validar/atualizar.
Exemplo (formulario.json):

{
  "inputEmail": "#email",
  "btnEnviar": "#enviar",
  "menuContato": "#menu-contato"
}

2. Execute o self-healing para a página desejada

dom-heal rodar --json ./formulario.json --url https://seusite.com/formulario
  • Importante:
    • O arquivo JSON passado será atualizado automaticamente com os novos seletores encontrados.
    • Será gerado, na mesma pasta, um arquivo ElementosAlterados.json com um relatório detalhado das alterações.

Exemplo de saída:

✅ Self-healing executado com sucesso!
📄 Log de alterações: ./ElementosAlterados.json
🗃️ JSON atualizado: ./home_selectors.json

3. Consulte o log de alterações

O arquivo ElementosAlterados.json mostra detalhadamente:

  • Qual elemento foi alterado
  • Seletor antigo vs novo seletor sugerido
  • Pontuação de similaridade
  • Motivo
  • boost (se houve boost)

Exemplo:

{
  "alterados": [
    {
      "nome": "inputEmail",
      "selector_antigo": "#email",
      "novo_seletor": "#input-email",
      "score": 0.88,
      "motivo": "id",
      "boost": true
    }
  ]
}

4. Integração com qualquer framework de teste

O arquivo de seletores (JSON) pode ser consumido diretamente pelos seus testes automatizados.
Basta garantir que cada framework (Cypress, Selenium, Robot, Playwright etc.) leia os seletores do JSON atualizado pelo DOM-Heal.

Exemplo prático:
Seu teste carrega o JSON e usa os seletores para interagir com a página — após o self-healing, não precisa alterar o teste, apenas garantir que os seletores estejam sempre atualizados.


🛠️ Fluxo Completo

  1. Execute o self-healing para a página desejada.
  2. Valide o JSON atualizado nos seus testes.
  3. Verifique o log ElementosAlterados.json para saber o que mudou.
  4. Se necessário, ajuste manualmente seletores muito específicos (casos raros).
  5. Repita o processo para cada página relevante do seu sistema.

💡 Dicas e Boas Práticas

  • Sempre utilize um JSON por página para facilitar a manutenção.
  • Versione seus arquivos de seletores (use Git).
  • Valide os seletores após rodar o self-healing, principalmente se seu front-end sofreu grandes mudanças estruturais.
  • O log detalhado pode ser usado como documentação da evolução dos seletores do seu sistema.
  • O mecanismo não depende do framework de teste: funciona com qualquer solução que use arquivos/dicionários de seletores.
  • Chrome deve estar instalado localmente para o funcionamento correto do Selenium headless.
  • O processo não interfere no código dos seus testes — apenas atualiza o arquivo de seletores consumido por eles.

🧑‍💻 Estrutura do Projeto

dom_heal/
├── cli.py         # Interface de linha de comando
├── engine.py      # Orquestra o ciclo completo de self-healing
├── extractor.py   # Extrai todos os elementos do DOM usando Selenium
├── comparator.py  # Matching fuzzy e seleção do melhor elemento
├── healing.py     # Atualiza o JSON de seletores
└── utils.py       # Funções utilitárias e normalização

👨‍🏫 Autor

Projeto desenvolvido por Jonnas Christian Sousa de Paiva
Contato: jonnaschristian@gmail.com


📄 Licença

MIT — sinta-se livre para usar, estudar e contribuir!


Contribua, reporte bugs e mande sugestões no GitHub


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

dom_heal-1.0.0.tar.gz (22.0 kB view details)

Uploaded Source

Built Distribution

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

dom_heal-1.0.0-py3-none-any.whl (16.0 kB view details)

Uploaded Python 3

File details

Details for the file dom_heal-1.0.0.tar.gz.

File metadata

  • Download URL: dom_heal-1.0.0.tar.gz
  • Upload date:
  • Size: 22.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.0

File hashes

Hashes for dom_heal-1.0.0.tar.gz
Algorithm Hash digest
SHA256 bb1a071dff2a8097b258d02e91c8cce9a7bb1e14d8085edb4e9c1df30715a76a
MD5 5fb547d558dd5b7028296a0925ec44e5
BLAKE2b-256 20d1468e899a134ef80fda5c7558cb0bbc52d0e3b52db2981343d967d0ea3724

See more details on using hashes here.

File details

Details for the file dom_heal-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: dom_heal-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 16.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.0

File hashes

Hashes for dom_heal-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f4f9d9817d1ba44f572ab5d9705d3e4743331f8ab33b79610bf71986d71d9f80
MD5 32a770e68cf0e3f09448b27edd0c5e88
BLAKE2b-256 1912e9f864823ee8a2c97e41fe221aa3fc16c6222c34ed69c804eb205c653c09

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