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

362
Views
Apunta a un iFrame usando Node.js/Puppeteer

¿Es posible apuntar a un iFrame cuando se utiliza el generador de flujo de trabajo de GUI en AWS Cloudwatch Synthetics?

Configuré el canary para iniciar sesión en un sitio web y redirigir la página que se ejecutó correctamente, pero uno de los elementos que debo verificar con Node.js está dentro de un iFrame que no se reconoce.

Este es el código del iframe. Se carga desde Javascript, pero todo el contenido es del mismo dominio:

 <iframe id="paramsFrame" src="empty.htm" frameborder="0" ppTabId="-1" onload="paramsDocumentLoaded('paramsFrame', true);"></iframe>

Este es el código que estoy usando para esta sección, pero solo devuelve un error de tiempo de espera:

 await synthetics.executeStep('verifyText', async function() { const elementHandle = await page.waitForSelector('#paramsFrame'); const frame = await elementHandle.contentFrame(); await frame.waitForXPath("//div[@class=\'css7\'][contains(text(),'Specificity')]", { timeout: 30000 }); })

Este código intenta apuntar a un div con clase css7 que se encuentra dentro de un iframe con id paramsFrame

Editar: hice una verificación nula en el frame y volvió como no nulo, no estoy seguro de si eso es relevante.

También traté de apuntar a un elemento directamente:

const next = await frame.waitForSelector('.protocol-name-link');

pero tengo el mensaje de error:

TimeoutError: waiting for selector .protocol-name-link

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

0

Si el iframe está en un origen diferente (por ejemplo, un dominio diferente), no podrá acceder a él a través de Titiritero.

Puede intentar deshabilitar algunas funciones de seguridad de Puppeteer, aunque no se recomienda.

Específicamente, probablemente desee agregar estos puppeteer.launch a args

 --disable-web-security --disable-features=IsolateOrigins,site-per-process
about 4 years ago · Juan Pablo Isaza Report

0

Intenté ejecutar un código similar en un sitio web que tenía un iframe de youtube y no necesitaba los argumentos de lanzamiento del titiritero

es decir

 args: [ "--disable-web-security", "--disable-features=IsolateOrigins,site-per-process", ],

Pero, primero me gustaría sugerir que el iframe intente confirmar que es el mismo iframe que necesita tal vez iniciando sesión, depurando o simplemente yendo a la consola de desarrollo.

Y el segundo es usar xpath completo del elemento en el marco.

Aquí está mi código que intenté ejecutar.

 const page = await browser.newPage(); console.log("open page"); await page.goto("https://captioncrusher.com/"); console.log("page opened"); // use this if you want to wait for all the requests to be done. // await page.waitForNetworkIdle(); const elementHandle = await page.waitForSelector("iframe.yt"); const frame = await elementHandle.contentFrame(); //These both work for me const aLink = await frame.waitForXPath("/html/body/div/div/a"); const classLink = await frame.waitForSelector(".ytp-impression-link"); await browser.close();
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!