Cómo detectar un CAPTCHA en pruebas de navegador con Robot Framework

Aloísio Vítor
How to use CapSolver
26-Oct-2026
Resumen
- Robot Framework puede llamar a una pequeña biblioteca de palabras clave en Python que usa el SDK oficial CapSolver Core para inspeccionar una página con CAPTCHA.
- El ejemplo devuelve al test de Robot el tipo de CAPTCHA detectado, la URL de la página y la sitekey.
- Ejecuta el test contra una página de desarrollo propia usando la clave pública de prueba de reCAPTCHA de Google.
- La palabra clave abre y cierra su propio navegador; no se adjunta a una sesión de SeleniumLibrary ni de Browser Library.
- La detección confirma el paso de descubrimiento de la entrada. No resuelve el CAPTCHA ni demuestra que un formulario en producción acepte el resultado de un solver.
Una prueba de navegador en Robot Framework puede fallar porque la página ahora muestra un CAPTCHA en lugar del contenido que espera la siguiente aserción. Aumentar un timeout genérico no explica ese cambio. Una comprobación específica de CAPTCHA puede darle al test un resultado útil: el tipo de desafío y los parámetros que necesitaría un flujo de trabajo de solver aprobado.
Robot Framework es un framework de código abierto para pruebas de aceptación y automatización de procesos robóticos. Su sintaxis de palabras clave permite a los equipos expresar comprobaciones mientras que las bibliotecas en Python implementan las operaciones subyacentes. Este tutorial conecta una palabra clave en Python con el Core SDK de CapSolver y verifica que Robot reciba resultados reales de detección desde una página de navegador.
Dónde encaja la detección de CAPTCHA en un test de Robot
La detección de CAPTCHA pertenece a un punto de control conocido de la página, antes de que el test trate una página bloqueada como una respuesta normal de la aplicación.
Por ejemplo, un flujo de navegador permitido espera un formulario de búsqueda pero en su lugar llega a un desafío. La primera pregunta útil es si hay un CAPTCHA soportado presente. Un resultado de reconocimiento puede entonces informar un siguiente paso controlado: usar la integración de resolución documentada, pausar para una acción humana o registrar un fallo de prueba específico.
Esto es diferente a tratar cada elemento ausente como un CAPTCHA. Una página también puede fallar porque su script de aplicación no se cargó, porque su ruta cambió o porque un selector es incorrecto. Mantén la detección de CAPTCHA separada de esos diagnósticos.
La guía de usuario de Robot Framework documenta las bibliotecas de prueba en Python y la ejecución de palabras clave. La pequeña biblioteca que aparece abajo usa ese punto de extensión. Es una integración de ejemplo, no una afirmación de que Robot Framework incluya de serie una biblioteca nativa de CapSolver.
Instala los paquetes en un mismo entorno
Instala Robot Framework, Playwright y el Core SDK en el mismo entorno de Python para que el runner de tests pueda importar los tres.
El ejemplo usa Python 3.12, Robot Framework 7.5, Playwright 1.64.0 y capsolver-core 0.1.1. El repositorio oficial del framework es la fuente para los antecedentes del proyecto y las rutas de instalación soportadas.
bash
python -m pip install robotframework==7.5 playwright==1.64.0 capsolver-core==0.1.1
python -m playwright install chromium
Ejecuta la instalación y los tests con el mismo intérprete. Un fallo de configuración habitual es instalar una biblioteca de navegador en un entorno y ejecutar Robot desde otro. La importación entonces falla antes de que la página se llegue a abrir.
Este ejemplo solo detecta un widget y lee sus parámetros públicos. La resolución de pago requeriría una clave API de solver válida, una cuenta preparada y un flujo de trabajo aprobado por separado. El test siguiente no produce ningún resultado de pago.
Crea un fixture de CAPTCHA propio
Crea index.html en un directorio de fixtures dedicado y sírvelo en tu propia máquina.
Google documenta la clave pública de prueba de reCAPTCHA v2 en su guía para pruebas automatizadas. El fixture usa esa clave para cargar un widget reconocible sin usar la configuración de un sitio en producción.
html
<!doctype html><html><head><title>Owned CAPTCHA test fixture</title></head><body>
<h1>Owned development page</h1>
<div class="g-recaptcha" data-sitekey="6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI"></div>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
</body></html>
Inicia un servidor local desde ese directorio:
bash
python -m http.server 8766 --bind 127.0.0.1
El script del widget sigue necesitando acceso de red a Google. Si el widget del fixture no se carga, comprueba ese prerrequisito antes de interpretar un resultado de detección vacío. El servidor local expone el fixture solo en la interfaz de loopback.
Una clave de prueba es útil para comprobar el cableado y el reconocimiento. No es evidencia representativa de la dificultad de los desafíos en producción, del rendimiento de un solver de pago ni de la aceptación por parte de la aplicación. Mantén esas pruebas separadas en la checklist de lanzamiento.
Añade la biblioteca de palabra clave en Python
Guarda la siguiente biblioteca como CaptchaCheck.py junto a tu archivo de test de Robot.
La biblioteca llama al método documentado get_captcha_info del Core SDK. El wrapper específico para Robot es deliberadamente pequeño: inicia un event loop, abre un navegador, lee la información y cierra el navegador en un bloque finally.
python
import asyncio
from robot.api.deco import keyword
from capsolver_core import create_capsolver
from playwright.async_api import async_playwright
@keyword("Inspect CAPTCHA Page")
def inspect_captcha_page(url):
return asyncio.run(_inspect(url))
async def _inspect(url):
async with async_playwright() as pw:
browser = await pw.chromium.launch(headless=True)
try:
page = await browser.new_page()
await page.goto(url, wait_until="networkidle")
async with create_capsolver() as cap:
infos = await cap.get_captcha_info(page)
return [{"type": item.type.value, "url": item.website_url,
"site_key": item.website_key} for item in infos]
finally:
await browser.close()
La lista devuelta contiene diccionarios simples, que son cómodos para las aserciones en Robot. Una lista vacía significa que esta inspección no devolvió información coincidente. No debería convertirse en una afirmación de que no existe ningún posible desafío en ninguna parte del flujo.
La espera de carga de página es adecuada para este pequeño fixture. Una aplicación en producción con actividad de red persistente puede necesitar una condición de preparación diferente y específica de la página. No copies networkidle en cada aplicación suponiendo que demuestra que el widget relevante ha terminado de renderizarse.
Canjea tu código de bonificación de CapSolver
Aumenta tu presupuesto de automatización al instante.
Usa el código de bonificación CAP26 al recargar tu cuenta de CapSolver para obtener un 5% extra de bonificación en cada recarga, sin límites.
Canjéalo ahora en tu Panel de CapSolver
Ejecuta el test de Robot e inspecciona su resultado
Guarda lo siguiente como captcha.robot junto a la biblioteca y ejecútalo mientras el servidor local del fixture esté disponible.
robotframework
*** Settings ***
Library CaptchaCheck.py
Library Collections
*** Variables ***
${PAGE_URL} http://127.0.0.1:8766/
*** Test Cases ***
Identify The Fixture CAPTCHA
${items}= Inspect CAPTCHA Page ${PAGE_URL}
Should Not Be Empty ${items}
${first}= Get From List ${items} 0
Should Be Equal ${first}[type] reCaptchaV2
Log ${items}
bash
python -m robot --outputdir results captcha.robot
El test comprueba que el detector devolvió un resultado y que el fixture se identifica como reCaptchaV2. Su log contiene la URL de la página devuelta y la sitekey pública. El informe generado por Robot indica si esas aserciones han pasado.
Un resultado satisfactorio establece una cadena específica: Robot invocó tu palabra clave en Python, Playwright abrió el fixture, el Core SDK inspeccionó la página real y los datos devueltos llegaron a las aserciones de Robot. El código cierra el navegador incluso cuando se produce una excepción.
Interpreta los fallos en la etapa en que se producen. Un error de importación es un problema de dependencias. Un error de navegación es un problema de acceso a la página. Un timeout puede significar que el fixture no se estabilizó. Una aserción de tipo fallida significa que los datos devueltos no coincidieron con la expectativa del fixture. Estas condiciones requieren correcciones diferentes.
Conecta la detección a un flujo de trabajo de solver con cuidado
La detección proporciona información para una decisión de resolución, pero el siguiente paso debe preservar el contexto de página que la tarea requiere.
La guía oficial del SDK describe la resolución en navegador como una operación separada. Si tu flujo de trabajo en producción necesita resolver y continuar en la misma página, mantén viva esa página y su contexto de navegador durante la operación. La palabra clave de diagnóstico de este artículo cierra su navegador y por lo tanto no es un paso de continuación enchufable para una sesión autenticada existente.
Los equipos que ya usan SeleniumLibrary o Robot Framework Browser también deberían distinguir su navegador activo del que abre este ejemplo. Compartir una URL no comparte cookies, interacciones previas ni un objeto de página. Evita afirmar que un desafío se resolvió en el navegador activo del test cuando el trabajo en realidad ocurrió en otro.
Para pruebas de regresión ordinarias sobre sitios propios, las claves de prueba del proveedor pueden ser la opción más simple. Usa una ruta de resolución real solo cuando el objetivo del test requiera validar esa integración. La guía de claves de prueba de reCAPTCHA explica ese límite con más detalle.
Crea flujos de automatización fiables con CapSolver
Usa un pequeño punto de control explícito para distinguir un CAPTCHA reconocido de un fallo genérico de elemento. CapSolver proporciona la capacidad de detección en este ejemplo; Robot Framework convierte su resultado en una aserción de prueba legible. Añade la resolución de pago solo como un paso verificado por separado con la propiedad de página correcta y comprobaciones de resultado de aplicación adecuadas.
Preguntas frecuentes
P: ¿Este test de Robot resuelve el CAPTCHA?
No. Detecta el CAPTCHA del fixture y devuelve sus parámetros públicos. El test no solicita una solución de pago ni verifica el envío de un formulario en producción.
P: ¿Es este un plugin oficial de Robot Framework?
No. El wrapper de palabra clave en Python es un ejemplo construido alrededor del mecanismo de bibliotecas documentado de Robot Framework y del Core SDK oficial. Se incluye el wrapper exacto para que su comportamiento sea inspeccionable.
P: ¿Puedo usar la misma palabra clave dentro de tests con SeleniumLibrary?
Puedes llamar a la palabra clave, pero abre un navegador de Playwright separado. No inspecciona ni continúa la sesión de navegador de SeleniumLibrary. Una integración sobre una sesión existente necesita una transferencia explícita y soportada.
P: ¿Por qué el fixture devuelve una lista vacía?
Comprueba si el script del widget se cargó, si se está sirviendo la página esperada y si el SDK soporta el desafío presente. Un resultado vacío por sí solo no identifica la causa.
P: ¿Necesito una clave API de solver para este ejemplo?
La comprobación demostrada de detección de parámetros no envía una tarea de resolución de pago. Un paso de resolución en producción requiere las credenciales y prerrequisitos documentados para esa operación.
P: ¿Debería cada prueba automatizada llamar a un solver de CAPTCHA?
No. Usa los mecanismos de prueba del proveedor para pruebas rutinarias de regresión sobre sitios propios cuando sea adecuado. Reserva las pruebas de integración con el solver para el flujo de trabajo que están destinadas a validar, y mantenlas acotadas.
Aviso de Cumplimiento: La información proporcionada en este blog es solo para fines informativos. CapSolver se compromete a cumplir con todas las leyes y regulaciones aplicables. El uso de la red de CapSolver para actividades ilegales, fraudulentas o abusivas está estrictamente prohibido y será investigado. Nuestras soluciones para la resolución de captcha mejoran la experiencia del usuario mientras garantizan un 100% de cumplimiento al ayudar a resolver las dificultades de captcha durante el rastreo de datos públicos. Fomentamos el uso responsable de nuestros servicios. Para obtener más información, visite nuestros Términos de Servicio y Política de Privacidad.
Máse

¿No se detecta el CAPTCHA en un iframe? Cómo encontrar el marco correcto
Encuentra por qué un CAPTCHA visible se omite dentro de un iframe. Verifica el contexto del documento, la carga del widget, los parámetros del sitio y la transferencia del navegador a tu solucionador.

Aloísio Vítor
26-Oct-2026

Cómo detectar un CAPTCHA en pruebas de navegador con Robot Framework
Detecta CAPTCHA en Robot Framework con una palabra clave de Python probada y el SDK oficial del solucionador. Inspecciona los parámetros de la página y comprende dónde se detiene la detección.

Aloísio Vítor
26-Oct-2026

Pruebas de CAPTCHA en Node.js: Claves de prueba y verificaciones del solucionador
Planifica pruebas de CAPTCHA en Node.js con claves de prueba del proveedor, verificaciones controladas del solucionador y aserciones claras. Separa las regresiones del formulario de los fallos en la resolución externa.

Aloísio Vítor
16-Oct-2026

Problemas comunes de CAPTCHA de Selenium y cómo resolverlos
Solucionar los problemas comunes de integración de CAPTCHA en Selenium verificando la configuración de la prueba, las extensiones, las esperas, el contexto de iframe, las respuestas del solucionador y los resultados de la aplicación.

Aloísio Vítor
22-Sep-2026

SDK de Python de CapSolver vs API HTTP: ¿Cuál deberías usar?
Elija el SDK Core de Python de CapSolver o la API HTTP directa según el soporte para tareas, el acceso a la página, el manejo de respuestas y las responsabilidades que tu aplicación posee.

Aloísio Vítor
16-Sep-2026

Monitoreo de desviación de intención de búsqueda para flujos de trabajo de SEO con IA
Construye un monitoreo de desviación de intención de búsqueda con datos de Google Search Console, observaciones controladas de los resultados de búsqueda (SERP), etiquetas de intención, umbrales de confianza, evidencia y automatización segura.

Aloísio Vítor
31-Aug-2026


