Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

313
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda