Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

85
Vistas
Titiritero page.evaluate no regresa correctamente

Estoy tratando de obtener todos los elementos de los botones de una página web usando el código:

 const test = await page.evaluate(() => { return document.querySelectorAll("button") }) console.log(test)

Cuando registro la variable de prueba, arroja 'indefinido', mientras que cuando ejecuto el siguiente código en la consola de Chrome:

 document.querySelectorAll("button")

Produce la cantidad correcta de elementos.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Debe hacer todo lo que funcione con HTMLElements en el contexto del sitio web (por lo tanto, desde dentro de la devolución de llamada de evaluate ).

Al final de la evaluate , deja el contexto del sitio, está muy limitado a lo que puede devolver de la evaluate .

Los datos que devuelve de la evaluate deben ser serializables , los elementos DOM no son serializables de manera significativa.

Por lo tanto, solo puede devolver algo que se pueda serializar utilizando JSON.stringify .

Mi objetivo final es verificar todos los botones hasta que encuentre un botón con cierto texto interno y luego haga clic en él.

Entonces probablemente no quiera usar la evaluate , consulte los elementos desde fuera del contexto de los sitios usando $ o $$

 let buttons = await page.$$("button")

Para obtener el texto de ElementHandler , puede usar:

 const text = await page.evaluate(element => element.textContent, buttons[0]);

o

 const text = await (await buttons[0].getProperty('textContent')).jsonValue();

Un click se puede realizar con:

 await buttons[0].click()
about 4 years ago · Juan Pablo Isaza Denunciar

0

Los valores devueltos por la evaluación deben ser serializables por JSON ya que el titiritero está devolviendo llamadas a la API de Chrome, intente esto:

 const test = await page.evaluate() => { let elements = Array.from(document.querySelectorAll("button")); let buttons = elements.map(element => { return element }) return buttons; }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda