Refactor de act:evaluate con CDP
¿Te ha pasado que una pestaña del navegador se queda “congelada” sin motivo aparente? Muchas veces, el culpable es un script de evaluate que tarda demasiado. Como Playwright organiza los comandos en una cola por página, un solo proceso lento puede detener todas las acciones siguientes, como clicks o escritura de texto.
Para solucionar esto, estamos moviendo act:evaluate a una implementación directa con CDP. Esto separa la ejecución del código de la cola principal de Playwright, lo que ayuda a que tus automatizaciones sean más fiables y no se queden atascadas.
Requisitos previos
Sección titulada «Requisitos previos»- Tener activado el gate
browser.evaluateEnabled. - Acceso al CDP endpoint del navegador.
Inicio rápido
Sección titulada «Inicio rápido»Sigue estos pasos para implementar el nuevo flujo de ejecución aislado en 5 minutos:
- Define un presupuesto de tiempo único: Usa una función de ayuda para que el timeout sea consistente en todo el proceso.
// Ejemplo de lógica para el presupuestoconst budget = createBudget({ timeoutMs, signal });// Usa budget.remainingMs() y budget.signal en tus llamadas
- Conecta vía CDP: Crea un módulo
cdp-evaluate.tsque se conecte al socket del navegador y useTarget.attachToTargetpara obtener unasessionIdindependiente. - Ejecuta el código: Usa
Runtime.evaluatepara scripts globales oRuntime.callFunctionOnsi necesitas interactuar con un elemento específico. - Configura el fallback: Si el mapeo de elementos falla, el sistema debe usar automáticamente el path de Playwright para asegurar que la acción se complete.
Solución de problemas
Sección titulada «Solución de problemas»- El mapeo de elementos falla: Si no se encuentra un
backendDOMNodeIdpara unref,act:evaluateusará Playwright como respaldo. Esto es normal y mantiene la compatibilidad. - Efectos secundarios tras un timeout:
Runtime.terminateExecutionintenta detener el script, pero puede dejar rastro en la página. Revisa los logs para confirmar cuándo se activa esta terminación. - La cola de Playwright sigue bloqueada: Verifica que estás usando la conexión CDP independiente y no la sesión compartida de Playwright.
- Timeouts inconsistentes: Asegúrate de propagar el mismo
AbortSignala todas las funciones internas para que la cancelación sea total.
¿Necesitas ayuda para configurar tu entorno? Prueba nuestro AI Setup Assistant.
Próximos pasos
Sección titulada «Próximos pasos»OpenClaw Expert
Sigues atascado?
Si esta pagina no resolvio tu caso, pregunta a OpenClaw Expert para pasos concretos.