Auto-recuperação de seletores DOM para testes web
Project description
DOM-Heal
Auto-recuperação de seletores DOM para testes web automatizados
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.jsoncom 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
- Execute o self-healing para a página desejada.
- Valide o JSON atualizado nos seus testes.
- Verifique o log
ElementosAlterados.jsonpara saber o que mudou. - Se necessário, ajuste manualmente seletores muito específicos (casos raros).
- 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bb1a071dff2a8097b258d02e91c8cce9a7bb1e14d8085edb4e9c1df30715a76a
|
|
| MD5 |
5fb547d558dd5b7028296a0925ec44e5
|
|
| BLAKE2b-256 |
20d1468e899a134ef80fda5c7558cb0bbc52d0e3b52db2981343d967d0ea3724
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f4f9d9817d1ba44f572ab5d9705d3e4743331f8ab33b79610bf71986d71d9f80
|
|
| MD5 |
32a770e68cf0e3f09448b27edd0c5e88
|
|
| BLAKE2b-256 |
1912e9f864823ee8a2c97e41fe221aa3fc16c6222c34ed69c804eb205c653c09
|