Voltar ao blog
Tecnologia6 min de leitura
Vision-first vs seletores CSS: por que cliques por coordenadas são mais robustos
Seletores quebram quando o markup muda. A análise visual mantém a automação estável ao localizar elementos por capturas de tela em vez de caminhos DOM frágeis.
8 de abr. de 2026O problema dos seletores em fluxos de trabalho antideteção
Os seletores CSS são a forma padrão como as ferramentas de automação encontram elementos em uma página. Você escreve um caminho como `button.submit-btn` ou `#login-form input[name="email"]`, e o script clica ou o preenche. Isso funciona até que a marcação mude — e em fluxos de trabalho antideteção, a marcação muda constantemente.
Diferentes perfis de navegador podem ver diferentes versões de página. Testes A/B, layouts direcionados geograficamente, banners de consentimento, desafios de detecção de bots e nomes de classe dinâmicos deslocam o DOM entre sessões. Um seletor que funciona no perfil #1 pode não existir no perfil #12.
Por que os seletores quebram com mais frequência do que você pensa
- Nomes de classe dinâmicos — Frameworks como React, Next.js e Tailwind geram classes com hash ou utilitárias que mudam entre compilações. Um seletor direcionado a `.css-1a2b3c` para de funcionar após a próxima implantação.
- Testes A/B — A mesma URL pode servir estruturas DOM completamente diferentes para visitantes diferentes. Seu seletor assume uma variante; a página mostra outra.
- Banners de consentimento e cookies — Essas sobreposições injetam novos elementos, deslocam z-indexes e às vezes envolvem a página inteira em um contêiner que não existia quando você escreveu o seletor.
- Sobreposições de detecção de bots — Desafios do Cloudflare, intersticiais do DataDome e sistemas similares substituem o conteúdo da página por sua própria marcação. Nenhum ajuste de seletor ajuda quando a página em si desapareceu.
- Diferenças de localidade e geolocalização — Layouts RTL, texto de botão traduzido e componentes de UI específicos da região mudam a árvore DOM.
Em um script de navegador único, você percebe e corrige esses problemas um de cada vez. Em um lote de 50 perfis, um seletor quebrado falha silenciosamente em dezenas de sessões antes que alguém perceba.
Como funciona a interação orientada por visão
Orientado por visão significa que a IA tira uma captura de tela da página e a analisa visualmente — da mesma forma que um humano olharia para uma tela. Em vez de procurar no DOM por um seletor específico, ela identifica elementos por sua aparência: "o botão Sign Up azul no centro da página".
O fluxo é direto:
- Tirar uma captura de tela do estado atual da página
- Enviá-la para um modelo de visão que identifique elementos interativos e suas posições
- Retornar caixas delimitadoras normalizadas (coordenadas) para cada elemento detectado
- Clicar, passar o mouse ou interagir usando essas coordenadas — nenhuma pesquisa DOM necessária
// Vision-first click flow
await browser_parallel_navigate({ url: "https://target.example/signup" });
const grouped = await browser_parallel_vision_analyze_grouped();
// AI identifies elements visually across all active browsers
// Returns normalized bounding boxes for each element
await browser_parallel_click_normalized_box({ box: signUpButton.box });
Cliques de coordenadas vs cliques de seletor
Um clique de seletor diz "encontre o elemento neste caminho DOM e clique nele". Um clique de coordenadas diz "clique nesta posição na tela". A diferença importa quando as páginas divergem.
Abordagem baseada em seletor
// Breaks if class name changes, element moves, or overlay appears
await page.click("button.btn-primary.submit-action");
// Breaks if form structure changes
await page.fill("#signup-form input[type=email]", "user@mail.com");
Abordagem baseada em visão
// Works regardless of class names, IDs, or DOM structure
await browser_parallel_screenshot();
const analysis = await browser_parallel_vision_analyze_grouped();
// AI finds "Sign Up" button visually — same as a human would
await browser_parallel_click_normalized_box({ box: analysis.signUp.box });
A abordagem baseada em visão não se importa com nomes de classe, IDs ou profundidade de aninhamento. Se o botão estiver visível na tela, será encontrado. Isso é especialmente poderoso em cenários antideteção onde cada perfil pode renderizar uma página ligeiramente diferente.
Análise agrupada para operações em lote
Ao executar 20+ perfis de navegador em paralelo, a análise de visão precisa ser eficiente. Ornold usa análise agrupada — ela tira capturas de tela de todas as sessões ativas, as envia como lote para o modelo de visão e retorna resultados para cada sessão em uma chamada.
Isso importa por duas razões:
- Eficiência — Uma chamada de API lida com todas as sessões em vez de N chamadas separadas. A latência permanece aproximadamente constante independentemente do tamanho do lote.
- Tratamento de divergência — A IA vê o estado real de cada sessão. Se o perfil #7 tiver uma sobreposição CAPTCHA enquanto os outros mostram o formulário, o resultado agrupado reflete isso. Você pode ramificar a lógica por sessão em vez de assumir que todas as páginas parecem iguais.
// Grouped vision analysis across all active browsers
const results = await browser_parallel_vision_analyze_grouped();
// results.groups shows which browsers are in which state
// e.g., 15 browsers on the form, 3 on CAPTCHA, 2 on error page
Quando o modo DOM ainda vence
A análise de visão nem sempre é a escolha certa. A interação baseada em DOM (modo padrão do Ornold) é mais rápida, gratuita e perfeitamente confiável para páginas estruturadas com marcação estável.
Use o modo DOM quando:
- A página de destino tem HTML estável e previsível (por exemplo, seu próprio aplicativo, plataformas conhecidas)
- Você está preenchendo formulários com campos de entrada e rótulos claros
- A velocidade importa mais do que a resiliência — snapshots DOM são instantâneos, análise de visão leva 1-3 segundos
- Você quer evitar custos de crédito de visão
Use o modo Vision quando:
- As páginas variam entre perfis (testes A/B, direcionamento geográfico, layouts dinâmicos)
- Você está lidando com UIs baseadas em canvas, páginas ricas em imagens ou componentes web personalizados
- Os seletores quebram constantemente e o custo de manutenção é alto
- Você precisa verificar como a página realmente se parece (QA visual)
Você pode ativar ambos os modos ao mesmo tempo. O agente de IA escolhe automaticamente a melhor abordagem para cada ação — DOM para preenchimentos de formulários simples, visão para páginas complexas ou imprevisíveis.
Comparação do mundo real
Aqui está o que acontece na prática ao executar um fluxo de registro em 30 sessões do Linken Sphere:
Automação baseada em seletor
- 25 de 30 sessões são concluídas com sucesso
- 3 falham porque um banner de consentimento deslocou o layout do formulário
- 1 falha porque o Cloudflare serviu uma página intersticial
- 1 falha porque o site implantou uma nova versão durante a execução com nomes de classe diferentes
- Total: 83% de taxa de sucesso. Intervenção manual necessária para 5 sessões.
Automação baseada em visão
- 29 de 30 sessões são concluídas com sucesso
- 1 falha porque a página não carregou (timeout de rede — não é um problema de seletor)
- Banners de consentimento, deslocamentos de layout e mudanças de nomes de classe não tiveram efeito
- Total: 97% de taxa de sucesso. Uma tentativa novamente necessária para o timeout.
A lacuna se amplia conforme o tamanho do lote aumenta. Com 50+ perfis, a automação baseada em seletor normalmente requer manutenção constante. A automação baseada em visão permanece estável porque se adapta ao que realmente está na tela.
Configurando o modo Vision no Ornold
Ative o modo vision ao conectar seu agente de IA ao Ornold MCP. No assistente do painel de controle, selecione "Ambos os modos" na Etapa 2 para obter ferramentas DOM + Vision. Ou adicione o sinalizador manualmente:
# Claude Code — enable both DOM and Vision modes
claude mcp add --transport stdio ornold-browser -- npx ornold-mcp --token YOUR_TOKEN --mode both --linken-port 40080
# Codex — in config.toml
[mcp_servers.ornold-browser]
command = "npx"
args = ["ornold-mcp", "--token", "YOUR_TOKEN", "--mode", "both", "--linken-port", "40080"]
Cada análise de visão custa 1 crédito. Snapshots DOM são gratuitos. Com o modo "ambos" ativado, o agente de IA usa DOM por padrão e alterna para visão apenas quando necessário.
Principais conclusões
- Os seletores CSS assumem um DOM estável. Em fluxos de trabalho antideteção, o DOM é qualquer coisa menos estável.
- A interação orientada por visão encontra elementos por aparência, não por caminho. Ela se adapta automaticamente a mudanças de layout, sobreposições e testes A/B.
- A análise de visão agrupada lida com divergência de lote — cada sessão é analisada com base em seu estado real.
- O modo DOM ainda é a melhor escolha padrão para velocidade e custo. Use visão quando as páginas são imprevisíveis ou os seletores quebram constantemente.
- Ambos os modos podem coexistir. Deixe o agente de IA escolher a ferramenta certa para cada ação.