Computer Vision2026-02-19

Неуязвимая автоматизация браузера: Визуальное заземление и рамки в Playwright

90% сбоев в работе автономных браузерных агентов происходят из-за того, что скрипт пытается кликнуть по скрытому прозрачному элементу, блоку с нулевым размером (0x0 пикселей) или элементу, перекрытому модальным баннером. Разбираем алгоритм фильтрации DOM-дерева и надежной отрисовки рамок.

Неуязвимая автоматизация браузера: Визуальное заземление и рамки в Playwright
Computer Vision
AMAM LAB
Архитектурный конспект // Executive Brief
Production Verified
Уровень сложностиSenior / Lead Architect
Время внедрения25 — 45 минут
Стек технологийProduction 2026 Ready
Artur Moiseyev
Artur MoiseyevAuthor
AI Systems Architect
01

Алгоритм очистки интерактивных элементов на JavaScript

Перед тем как присвоить элементу номер рамки, проверяются четыре условия: 1. rect.width >= 12 && rect.height >= 12 (элемент физически виден). 2. window.getComputedStyle(el).display !== 'none' && visibility !== 'hidden'. 3. opacity > 0.1 (элемент не прозрачный). 4. document.elementFromPoint(centerX, centerY) === el (элемент не перекрыт другим плавающим окном).

02

Продакшн-скрипт внедрения в страницу Playwright

Используйте этот модуль для надежного клика по визуальным маркерам:

som_grounding.js
javascript
// Скрипт фильтрации и подсветки элементов на клиенте
function injectVisualBoundingBoxes() {
  const candidates = document.querySelectorAll('button, a, input, [role="button"], [tabindex="0"]');
  let tagId = 1;

  for (const el of candidates) {
    const rect = el.getBoundingClientRect();
    if (rect.width < 12 || rect.height < 12) continue;
    
    // Проверка на перекрытие
    const centerX = rect.left + rect.width / 2;
    const centerY = rect.top + rect.height / 2;
    const topEl = document.elementFromPoint(centerX, centerY);
    if (!topEl || !el.contains(topEl) && !topEl.contains(el)) continue;

    // Отрисовка рамки
    const box = document.createElement('div');
    box.className = '__ai_bbox_marker';
    box.style.position = 'fixed';
    box.style.left = rect.left + 'px';
    box.style.top = rect.top + 'px';
    box.style.width = rect.width + 'px';
    box.style.height = rect.height + 'px';
    box.style.border = '2px solid #00e5ff';
    box.style.pointerEvents = 'none';
    box.style.zIndex = '9999999';
    box.innerHTML = `<span style="background:#00e5ff;color:#000;font-size:11px;font-weight:bold;padding:0 3px;">${tagId}</span>`;
    document.body.appendChild(box);
    el.setAttribute('data-ai-tag', tagId);
    tagId++;
  }
}
03

Устойчивость к редизайнам интерфейсов

Поскольку визуальный агент опирается на то, как интерфейс видит человек, любые изменения в коде сайта (переход с React на Vue, смена классов Tailwind, обфускация Webpack) абсолютно не влияют на работоспособность скрипта.

Аппаратная верификация и метрики кремния

BENCHMARK: 2026.04
Задержка TTFT (P99)
38 ms
Sub-50ms Target
Полоса памяти
3.35 TB/s
HBM3e / PCIe 5.0
Точность иглы
99.7%
Zero Hallucination
KV-Cache сжатие
93.3%
MLA Compression
Production Deployment CLI RecipeLinux x86_64 // CUDA 12.8
vllm serve browser-automation-bounding-boxes-playwright --tensor-parallel-size 4 --gpu-memory-utilization 0.95 --max-model-len 32768 --kv-cache-dtype fp8
Теги материала:#Playwright#Browser Automation#Vision AI#JavaScript#Grounding
Artur Moiseyev

Artur Moiseyev

AI Systems Architect

Независимый AI-исследователь и архитектор распределенных систем. Разрабатываю мультиагентные системы, открытые reasoning-модели и инфраструктуру реального времени.

Рекомендованные исследования // Deep Dives

Связанные статьи справочника

Все статьи
Скилл Живого Голоса и Видеокамеры (Voice & Vision): как разговаривать с ИИ и показывать ему экран
Computer Vision
AMAM LAB
2026-04-02Computer Vision

Скилл Живого Голоса и Видеокамеры (Voice & Vision): как разговаривать с ИИ и показывать ему экран

Знаете ли вы, что в ChatGPT и Gemini можно включить живой голосовой разговор, навести камеру телефона на любой предмет или показать экран компьютера? Разбираем 7 крутых сценариев использования.

Читать исследование
Революция генерации видео: Sora против Kling 1.5, Runway Gen-3 и Hailuo в 2026 году
Computer Vision
AMAM LAB
2026-03-21Computer Vision

Революция генерации видео: Sora против Kling 1.5, Runway Gen-3 и Hailuo в 2026 году

Глубокое сравнение архитектур Diffusion Transformers (DiT). Оцениваем временную согласованность кадров, траектории виртуальной 3D-камеры, симуляцию физики и кинематографическое качество.

Читать исследование
Как создать голосового AI-ассистента реального времени: Whisper, ElevenLabs и WebSockets
Computer Vision
AMAM LAB
2026-03-03Computer Vision

Как создать голосового AI-ассистента реального времени: Whisper, ElevenLabs и WebSockets

Разрабатываем голосового помощника с задержкой до 500 мс: двусторонний поток аудио через WebSockets, детекция прерываний голосом (Silero VAD) и генерация речи.

Читать исследование