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

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

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

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