Ir al contenido

Evaluate JS

Tipo: page-evaluate  ·  Paquete: Browser v1.0.9  ·  Salida: object

Ejecuta código JavaScript dentro del contexto de la página y devuelve el resultado. Es una actividad avanzada: te da acceso directo al DOM y a las APIs de la página para casos que las demás actividades no cubren — leer un valor calculado, manipular un elemento difícil, o invocar una función de la propia página.

Ejecuta el script en la página. Puede ser una expresión (document.title) o una función que recibe un argumento ((arg) => arg.total * 2), en cuyo caso el valor del parámetro arg se le pasa. Si el script devuelve una promesa, la actividad espera a que se resuelva. Devuelve lo que el script retorne.

  • El script se escribe como JavaScript real, sin comillas alrededor: corre en el navegador, no en el motor de expresiones. Los valores del playbook se pasan por arg, no concatenándolos dentro del código.
  • arg debe ser serializable (texto, número, booleano, lista o diccionario).
  • No espera a ningún elemento ni tiene timeout: si el script busca algo que aún no está, pon antes un Wait For.
  • El resultado no se escribe en el log (puede traer datos de la página): el log solo dice si hubo resultado.
ParámetroTipoPor defectoDescripción
scriptstring—Expresión o función JavaScript. Ej: document.title o (arg) => arg.total * 2.
ParámetroTipoPor defectoDescripción
pageZoanPageSession—La sesión de página. Omítela dentro de un body; fuera, pasa la variable de la sesión (p. ej. page = page).
argobject—Argumento que se pasa al script si este es una función.

Devuelve un object con el valor que retorne el script, serializado: texto, número, booleano, lista u objeto. Si el script no devuelve nada (undefined) o devuelve null, la salida queda vacía. Un elemento del DOM no sirve fuera de la página: devuelve su texto o sus atributos.

Page Evaluate script = document.title → output: titulo
Page Evaluate
script = () => Array.from(document.querySelectorAll('.precio')).map(e => e.innerText)
→ output: precios
For Each items = precios itemVariable = precio
└─ activities:
Log message = "Precio: " + precio

Pasar un valor del playbook con arg:

Page Evaluate script = (codigo) => document.querySelector(`[data-codigo="${codigo}"]`)?.innerText arg = codigoProducto → output: descripcion
MensajeCausa y solución
'script' es obligatorio.El script está vacío.
Error de JavaScript (p. ej. ReferenceError: x is not defined, TypeError: Cannot read properties of null)El script falló dentro de la página. Pruébalo antes en la consola del navegador (F12) y protege los accesos a elementos que pueden no existir (?.).
'page' debe ser una ZoanPageSession.page está vacío fuera de un body.
  • Get Text / Get Attribute — opciones simples y recomendadas para leer datos.
  • Click — interacción estándar sin necesidad de JavaScript.