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

120
Vistas
Haga clic en iframe con estilo específico

Tengo una página con unos 10 iframes. Solo 1 de estos iframes es visible y el índice del iframe visible cambia cada recarga de página . El iframe visible solo contiene un estilo de display: block , no contiene nada más que pueda usar para seleccionarlo, como un nombre o título.

Ejemplo:

 <div class="container"> <iframe style="display: none; width: 310px; height: 100px; border: 0px; user-select: none;"> <html> <body> <div class="button"/> </body> </html> </iframe> <--- not visible <iframe style="display: block; width: 310px; height: 100px; border: 0px; user-select: none;"> <html> <body> <div class="button"/> // need to click this! </body> </html> </iframe> <--- visible :) </div>

Mi pregunta es cómo puedo seleccionar el iframe con la display: block en titiritero y luego hacer clic en el botón dentro de él.

Intenté resolver esto obteniendo todos los iframes en una página, recorriéndolos y seleccionando el que tiene un estilo de visualización de 'bloque':

 // select all iframes const Frames = await page.frames(); // loop over iframes and check if iframe display is block or none. Frames.forEach(async (item, i) => { const frame = await item.contentFrame(); const showingIframe = await page.evaluate( () => window.getComputedStyle(frame.querySelector('iframe')).display ); if (showingIframe === 'block') { console.log('showing'); // click button } else { console.log('not showing'); } });
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Puede encontrar fácilmente un elemento si el estilo es muy específico. No es necesario pasar por todos los marcos para eso.

 const selector = `iframe[style*="display: block"]` const visibleIframe = document.querySelector(selector); console.log({ visibleIframe });

Hacer clic en un botón en el interior se puede hacer de muchas maneras. Aquí hay una solución simple de javascript,

 visibleIframe.contentDocument.querySelector(".button").click()
  • Enlace de Codesandbox
  • Obtenga más información sobre el asterisco en el selector de atributos
about 4 years ago · Juan Pablo Isaza Denunciar

0

Así que finalmente resolví esto, gracias a @Md. Abu Taher por indicarme la dirección correcta.

 try { const selector = `iframe[style*='display: block']`; await page.frames().find((frame) => frame.click(selector, { delay: 8000 })); } catch (error) {}

Lo que hace es encontrar todos los iframes en la página. Luego encuentra y hace clic en el iframe que coincide con el selector definido anteriormente, esto mantiene presionado el botón durante 8 segundos, lo que omite el captcha de StockX (o más bien lo completa como lo haría un usuario).

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