0Pricing
AI Agents · Lección

Construcción de un agente fiable para rellenar formularios

Un caso práctico: iniciar sesión en un portal, rellenar un formulario de varias páginas y verificar el envío.

Construcción de un agente fiable para rellenar formularios es una lección gratuita de AI Agents en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de AI Agents, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de AI Agents incluye 4 lecciones en total.

Partes de esta lección aún no han sido traducidas y se muestran en inglés.

Un proyecto realista

Un agente para «rellenar este formulario de varias páginas». Combinaremos Playwright + planificación mediante LLM + reintentos + alternativa de visión.

Arquitectura

  1. El LLM lee los requisitos de los campos a partir de una especificación JSON
  2. Playwright abre el formulario
  3. Para cada campo, encuentra el selector y el valor, lo rellena y lo valida
  4. Si resulta difícil localizar un campo mediante el DOM, recurre a la visión
  5. Envía el formulario y verifica que se haya enviado correctamente

Step 1: Define the Task

TASK = {
    'url': 'https://example.com/apply',
    'login': {'user': 'alice', 'pass': '...'},
    'fields': {
        'first_name': 'Alice',
        'last_name': 'Smith',
        'email': 'alice@example.com',
        'role': 'Senior Engineer'
    }
}

Step 2: Login

page.goto(TASK['url'])
if page.locator('input[name="username"]').is_visible():
    page.fill('input[name="username"]', TASK['login']['user'])
    page.fill('input[name="password"]', TASK['login']['pass'])
    page.click('button[type="submit"]')
    page.wait_for_load_state('networkidle')

Step 3: Field Filler

def fill_field(page, field_name, value):
    for selector in [
        f'input[name="{field_name}"]',
        f'input[aria-label="{field_name}"]',
        f'input[placeholder*="{field_name}"]',
        f'label:has-text("{field_name}") + input'
    ]:
        if page.locator(selector).count() > 0:
            page.fill(selector, value)
            return True
    return False

# --- demo ---
class _FakeLocator:
    def __init__(self, found):
        self._found = found
    def count(self):
        return 1 if self._found else 0

class _FakePage:
    """Only the 3rd selector (placeholder) matches, to show the fallback loop."""
    def locator(self, selector):
        return _FakeLocator(found='placeholder*=' in selector)
    def fill(self, selector, value):
        print(f'Filled via selector: {selector} -> {value!r}')

page = _FakePage()
ok = fill_field(page, 'email', 'alice@example.com')
print(f'fill_field succeeded: {ok}')

Paso 4: localizador asistido por LLM

Si fallan los selectores estándar, pida al LLM que identifique el campo:

def ask_llm_for_selector(html, field_name):
    prompt = f'Find the input element for "{field_name}" in this HTML and return a CSS selector. HTML:\n{html[:5000]}'
    return llm.invoke(prompt).content.strip()

Paso 5: alternativa mediante visión

Si ni siquiera el LLM encuentra un selector, tome una captura de pantalla y utilice la visión:

if not filled:
    screenshot = page.screenshot()
    coordinate = vision_llm_locate(screenshot, field_name)
    page.mouse.click(coordinate.x, coordinate.y)
    page.keyboard.type(value)

Paso 6: validar cada paso

Después de rellenar el campo, vuelva a leer su valor:

actual = page.input_value(selector)
assert actual == expected_value, f'Expected {expected_value}, got {actual}'

Step 7: Submit and Verify

page.click('button[type="submit"]')
page.wait_for_load_state('networkidle')
if page.locator('text=Thank you').count() == 0:
    raise SubmissionFailed('Success page not detected')

Paso 8: lógica de reintentos

A veces los formularios fallan. Vuelva a intentarlo con comprobaciones de idempotencia:

@retry(stop=stop_after_attempt(3), wait=wait_fixed(2))
def fill_and_submit(page, task):
    ...

Paso 9: gestionar el CAPTCHA

Si el formulario tiene reCAPTCHA, utilice un servicio de resolución (2Captcha, Anti-Captcha), o gestione el fallo correctamente y pida ayuda a una persona.

Paso 10: registro y reproducción

Guarde cada acción y captura de pantalla. Cuando algo falle, podrá reproducir la traza para depurarlo:

context.tracing.stop(path=f'trace-{task_id}.zip')
# View with: playwright show-trace trace-abc.zip

Consideraciones sobre la concurrencia

Para gestionar en paralelo los formularios de muchos usuarios, cree un contexto de navegador por tarea. Limite la concurrencia para no sobrecargar el sitio de destino.

Respetar el sitio de destino

  • Espere entre acciones (las personas no escriben a 200 cps)
  • Respete robots.txt y los ToS
  • Utilice IP rotativas solo cuando esté permitido
  • Evite los abusos: el tráfico de un agente no equivale a una campaña masiva de scraping

Estrategia de robustez

¿Cuál es la estrategia más fiable para rellenar formularios con HTML impredecible?

Repaso

Playwright + selectores asistidos por LLM + alternativa mediante visión + validación de cada paso + reintentos + registros de trazas. La receta para rellenar formularios de forma fiable.

Preguntas frecuentes

¿La lección «Construcción de un agente fiable para rellenar formularios» es gratis?

Sí — el texto completo de «Construcción de un agente fiable para rellenar formularios» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de AI Agents, actualiza a CoddyKit PRO. El curso de AI Agents incluye 4 lecciones en total.

¿Qué aprenderé en «Construcción de un agente fiable para rellenar formularios»?

Un caso práctico: iniciar sesión en un portal, rellenar un formulario de varias páginas y verificar el envío. Practicas AI Agents con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar AI Agents?

No se requiere experiencia previa. AI Agents en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Construcción de un agente fiable para rellenar formularios»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de AI Agents?

Sí. Cada lección de AI Agents incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Automatización del navegador con Playwright
  2. Modelos de visión para comprender la pantalla
  3. Patrones de uso del ordenador (Anthropic Computer-Use)
  4. Construcción de un agente fiable para rellenar formularios
← Volver a AI Agents