Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

89
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!