Alcance seguro: Esta guía aplica únicamente a tus propios entornos de QA, staging y preproducción autorizados. Describe patrones de diagnóstico, pruebas y observabilidad para tu propia integración de CAPTCHA — nunca para sitios de terceros ni para flujos que no controlas.
Cuando un formulario de tu aplicación protegido con un CAPTCHA llega a la suite de pruebas, Selenium se detiene: el widget espera una interacción humana que el runner no puede completar. La salida no es "engañar" al navegador, sino resolver el desafío fuera de él. Selenium controla el navegador, CaptchaAI resuelve el CAPTCHA mediante su API y tu test inyecta el token resultante en el formulario. Así tu QA vuelve a ser determinista sin tocar el flujo de verificación real.
Un caso habitual: un equipo valida el alta de una fintech o el registro en un portal de cita previa en un staging protegido con Cloudflare Turnstile. Sin automatizar la resolución, cada ejecución quedaría bloqueada en el widget.
Cómo encaja CaptchaAI en tu pipeline de QA
El patrón de integración es siempre el mismo, sea cual sea tu framework de pruebas:
- Tu test detecta el widget de CAPTCHA en tu propia página (formulario de QA, landing de staging, endpoint de preproducción).
- Tu test envía a CaptchaAI los datos públicos del widget:
sitekey, URL de la página y tipo de CAPTCHA. - CaptchaAI devuelve un token válido para esa página.
- Tu test inyecta ese token en el campo correspondiente y envía el formulario.
- Tu backend verifica el token con el proveedor de CAPTCHA, igual que haría con un usuario real.
Este flujo se aplica solo a integraciones que tú controlas; no sirve para sortear protecciones de terceros. El CAPTCHA se resuelve del lado del servidor, así que Selenium nunca interactúa con el widget.
El patrón técnico en Selenium
Tres piezas resuelven casi todos los casos:
- Detección del widget. Usa
find_elementspara localizar el contenedor (.g-recaptchaen reCAPTCHA v2) antes de llamar a CaptchaAI; con la lista vacía evitas excepciones si el widget aún no ha cargado. - Inyección del token. Escribe el token en el
textareade respuesta y dispara elcallbacksi el formulario lo usa. - Esperas explícitas. Envuelve cada paso con
WebDriverWaity condiciones claras (presence_of_element_located,url_changes). Lossleepfijos son la causa número uno de tests inestables entre local y CI.
Configuración de navegador reproducible
Usa la misma configuración de navegador en todos tus entornos de QA, staging y CI. Así evitas que un test funcione en local y falle en CI sin motivo.
from selenium import webdriver
def make_driver(headless: bool = True) -> webdriver.Chrome:
options = webdriver.ChromeOptions()
if headless:
options.add_argument('--headless=new')
options.add_argument('--window-size=1280,800')
options.add_argument('--lang=es-ES')
return webdriver.Chrome(options=options)
Mantener viewport, idioma y user-agent idénticos en todos los runners reduce la varianza entre ejecuciones de tu propio QA.
Métricas y observabilidad
Instrumenta los pasos de CAPTCHA en tus pipelines de QA para detectar regresiones antes de que lleguen a producción:
- Tiempo de resolución por intento — desde la solicitud a CaptchaAI hasta la entrega del token.
- Tasa de éxito por endpoint propio — cuántas verificaciones de backend pasan respecto al total de intentos.
- Distribución de errores — agrupados por código (
ERROR_*, timeouts internos, fallos de red). - Latencia extremo a extremo — render de la página, resolución del CAPTCHA y respuesta de tu backend.
Conserva trazas (logs, capturas, HAR) para reproducir incidentes cuando un test falle de forma intermitente.
Buenas prácticas en tu entorno de QA
- Ejecuta siempre contra tu propia aplicación o contra entornos explícitamente autorizados.
- Mantén una API key de CaptchaAI separada para QA, distinta de la de producción, para no mezclar métricas.
- Define timeouts y reintentos razonables (
backoffexponencial) para no acumular trabajos pendientes durante caídas. - Versiona tus snapshots de configuración (
sitekey,action, umbrales) junto al código de los tests. - Revisa periódicamente el changelog de tu proveedor para anticipar cambios que afecten a tu integración.
El modelo por threads en USD encaja bien con una suite de QA: un plan BASIC ($15/mes, 5 threads) suele bastar en CI, y puedes escalar a STANDARD ($30/mes, 15 threads) al paralelizar más runners.
Solución de problemas
| Síntoma | Acción recomendada |
|---|---|
| El test no detecta el widget | Revisa selectores y tiempos en tu entorno de staging |
CaptchaAI devuelve ERROR_NO_SLOT_AVAILABLE |
Reintenta con backoff en tu pipeline interna |
| La validación de backend rechaza el token | Compara action/sitekey con tu configuración real |
| El test funciona en local pero falla en CI | Iguala viewport, idioma y user-agent en ambos entornos |
| Tiempos de resolución muy variables | Revisa la concurrencia y los límites de tu API key |
Preguntas frecuentes
¿Necesito una API key distinta para QA y para producción?
Sí. Separar las claves mantiene limpias las métricas y evita que el tráfico de pruebas consuma los threads de producción.
¿Con qué tipos de CAPTCHA puedo probar mi integración?
CaptchaAI resuelve los tipos más comunes en tu pipeline propio: reCAPTCHA v2 y v3, Cloudflare Turnstile y Cloudflare Challenge, GeeTest v3, además de CAPTCHA de imagen/OCR y grid. CaptchaFox, Friendly Captcha y Lemin están en beta. Consulta la documentación oficial para los parámetros de cada tipo.
¿Puedo ejecutar estos tests en modo headless?
Sí. CaptchaAI resuelve el desafío del lado del servidor; el navegador solo necesita cargar la página para extraer el sitekey. El modo headless funciona sin problemas.
¿Cómo controlo los errores intermitentes en mi propio CI?
Aísla el paso de CAPTCHA en una función con reintentos controlados y backoff exponencial. Registra métricas por intento para distinguir entre fallos de red, timeouts del proveedor y errores de configuración.
Guías relacionadas seguras
- Inicio rápido de CaptchaAI
- QA autorizado de CAPTCHA
- Pruebas de endpoints CAPTCHA en formularios propios
- Depurar tests de navegador cuando la API funciona
- Resolver reCAPTCHA v2 con la API
- Resolver Cloudflare Turnstile con la API
Valida tus integraciones de CAPTCHA en entornos propios con CaptchaAI.