在带有伪操纵者的iframe中单击按钮

时间:2020-08-27 16:53:05

标签: iframe puppeteer

尝试单击iFrame内的“我接受所有cookie”按钮(该弹出窗口仅针对欧盟国家/地区ip显示)。 您也可以在这里查看jsfiddle.net /#&togetherjs = VgKpE0jfJF。

enter image description here

//index.js
const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({
    headless:false,
      ignoreHTTPSErrors: true,
      slowMo: 50,
      args: ['--window-size=1440,900', '--disable-gpu', "--disable-features=IsolateOrigins,site-per-process", '--blink-settings=imagesEnabled=true']
    });
  const page = await browser.newPage();
  await page.goto('https://www.oracle.com/cloud/cost-estimator.html');

  await page.waitFor(3000)
  const frame = page.frames().find(f => f.name() === 'iframe');
  const acceptBtn = await frame.$(`a[class="call"]`);
  await acceptBtn.click();

  await page.screenshot({path: 'example.png'});

  //await browser.close();
})();

我得到的错误

UnhandledPromiseRejectionWarning: TypeError: Cannot read property '$' of undefined
    at

请帮助。谢谢

1 个答案:

答案 0 :(得分:2)

据我所知,此iframe在HTML代码中没有名称,因此您可以尝试使用其src(URL):

const frame = page.frames().find(f => f.url().startsWith('https://consent-pref.trustarc.com/'));