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

314
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar

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 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