Base: cómo usan los agentes un sitio hoy|INEMA.CLUB-PRO

En esta clase vas a

  1. 1Rol y nombre: las dos cosas que busca el agente
  2. 2El árbol de la página impreso por el kit
  3. 3Los huecos: control sin nombre, div que finge ser botón
  4. 4Árbol en texto × pantalla en píxeles

Objetivo: leer el árbol de accesibilidad que recibe el agente y compararlo con la captura de pantalla de la misma página.

01De la página al clic

Haz clic en cada bloque.

Haz clic en cada bloque del diagrama para ver qué hace.

Lo que no está en el árbol con rol y nombre, el agente solo lo encuentra adivinando por la pantalla.

02Cómo leer un árbol

Tres preguntas para cada línea.

1. ¿Cuál es el rol?

textbox es un campo de texto, combobox es una lista de opciones, button es un botón, link es un enlace, heading es un título, img es una imagen. El rol viene del elemento HTML: input, select, button, a, h1, img.

Un div con onclick no se vuelve button: aparece como texto suelto.

03El árbol de antes.html, junto a la pantalla

arvore.mjs abre la página en un Chromium headless, imprime el árbol con locator.ariaSnapshot() de Playwright 1.63.0 (el mismo formato de snapshot que usa Playwright MCP), guarda la captura de pantalla y comprueba lo que falta.

Terminal · árbol y pantalla
cd ~/projetos/formacao-webmcp-base-v72/kit
node arvore.mjs antes --tela ${TMPDIR:-/tmp}/tela-antes.png; echo "saída: $?"
Ejemplo del repositorio
## árvore de acessibilidade · 9 linhas · 182 bytes
- text: Agendar revisão
- img
- textbox "Seu nome"
- combobox:
  - option "Escolha" [selected]
  - option "Revisão básica"
  - option "Revisão completa"
- textbox
- text: Agendar
## tela · /tmp/tela-antes.png · 14536 bytes (o modelo teria de ler pixels)
## conferência · http://127.0.0.1:PORTA/antes.html
  - img sem nome acessível
  - combobox sem nome acessível
  - textbox sem nome acessível
  - <html> sem lang
  - sem <main>
  - sem <h1>
  - <div> clicável que não é botão ("Agendar")
  - campo #nome sem <label> (só placeholder)
  - campo #servico sem <label>
  - campo #data sem <label>
problemas: 10
saída: 1

Nueve líneas de árbol contra 14.536 bytes de PNG. En el árbol, la lista de servicios (combobox), el campo de fecha y la imagen no tienen nombre, y el botón "Agendar" quedó como text. La conferencia lista 10 problemas y el script sale con 1.

04Práctica

El árbol de la página de ejemplo y el de tu sitio.

E1 · Árbol × pantalla

10 min

Ejecuta el bloque "árvore e tela". Abre /tmp/tela-antes.png y, para cada línea del árbol, encuentra el control en la imagen. Marca los que no tienen nombre.

Listo cuando: node arvore.mjs antes --tela /tmp/tela-antes.png → problemas: 10 y saída: 1, y el archivo /tmp/tela-antes.png existe.

E2 · El árbol de tu sitio

10 min

Ejecuta arvore.mjs en la misma página de tu sitio que usaste en la clase 1. Anota el número de problemas: vuelve en la clase 3 y en el plan.

Listo cuando: node arvore.mjs https://[tu-sitio]/[página] termina con problemas: N y saída: 0 (N = 0) o saída: 1, con N anotado.

05Prueba de la lección

Pregunta 1 de 4

¿Qué le entrega Playwright MCP al modelo para que decida dónde hacer clic?competencia

06En tres frases

Árbol, no píxelEl agente de navegador lee roles y nombres, una lista corta de texto.
Sin comillas, sin nombreUn control sin nombre es un control que el agente tiene que adivinar.
El placeholder engañaDa un nombre en el árbol, pero no es una etiqueta; usa label.

Para ir más allá

Clase anteriorSiguiente clase