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

316
Views
¿Por qué Titiritero page.click no está esperando (quizás sin navegador?)

Objetivo: tengo una página de la que necesito obtener html después de hacer clic primero en algo en la página.

Problema: el html que regresa no está esperando el clic de ese elemento.

Aquí hay una forma en que he tratado de hacerlo.

 await page.setViewport({width: 1400, height: 800}); await page.waitForSelector('.specs .accent', {visible: true, timeout: 80000}); const html = await page.evaluate(() => { const moreButton = document.querySelector('.specs .accent'); moreButton.click(); return document.body.innerHTML; }); console.log(html);

Aquí hay otra forma en que lo he intentado:

 await page.setViewport({width: 1400, height: 800}); await page.waitForSelector('.specs .accent', {timeout: 80000}); await page.click('.specs .accent'); const html = await page.evaluate(() => document.body.innerHTML); console.log(html);

El html que regresa es el html anterior al clic. Haciéndome creer que el clic está roto, pero sin error.

Notas:

  • Tengo una captura de pantalla después de la página.Haga clic. El elemento está allí, pero no se ha hecho clic.
  • No hay errores con page.click que pueda encontrar, pero podría estar depurando mal.
  • Recientemente implementé Browserless. El código anterior solía funcionar, pero en algún momento entre entonces y cuando implementé Browserless ( https://www.browserless.io/docs/docker-quickstart ), dejó de funcionar. Tal vez haya algún problema con su página. ¿Haga clic o en la versión de Titiritero?
  • También hay un proxy. Entonces, el flujo es aplicación -> sin navegador (titiritero) -> proxy -> página.
  • Lo que intento hacer clic es un <a href="javascript:void(0)" class="accent">More</a> . Cuando se hace clic, se completa con datos precargados.

Finalmente: Realmente no estoy seguro de cómo depurar esto aún más. ¿Alguna pista?

Página de referencia: https://www.article.com/product/16190/mod-blue-berry-armchair

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Después de probar con la URL que me envió por correo electrónico al soporte sin navegador, pude ver a través del depurador en vivo que la ventana gráfica predeterminada era un "móvil" y, por lo tanto, la estructura de la página había cambiado... El botón de hamburguesa era presente para la barra de navegación y la sección de Especificaciones donde está el botón en el que intenta hacer clic, estaba contraído.

Agregué esta línea antes de navegar a la página:

 await page.setViewport({ width: 1920, height: 1080 })

Esto hizo que la ventana gráfica fuera más grande horizontalmente y, después de eso, fui a la consola y ejecuté un document.querySelector('.specs .accent').click() y pude hacer clic y expandir la información como deseaba.

about 4 years ago · Juan Pablo Isaza Report

0

La solución es que ciertas solicitudes de JavaScript bloqueadas pueden interrumpir la capacidad de Puppeteer para hacer clic en un elemento. Si tiene problemas con esto, asegúrese de que Browerless, Puppeteer o su proxy no bloqueen solicitudes y luego intente la página. Haga clic nuevamente.

Una solución de depuración simple es usar page.screenshot para ver si, de hecho, se hizo clic en algo.

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!