我们有一个angularJs应用程序,该应用程序在按下按钮时会弹出一个模态形式(组件)。
该组件加载了一个iFrame,我似乎无法使用Puppeteer访问。
尝试使用 mainFrame 。
await page.waitFor(15000);
const frame = page.mainFrame().childFrames().find((iframe) => {
console.log('FRAME', iframe.name(), iframe.url());
return iframe.name() === 'iFrameName';
});
上面只有一帧(主框架/窗口)。
尝试了帧
await page.waitFor(15000);
const frame = page.frames().find((iframe) => {
console.log('FRAME', iframe.name(), iframe.url());
return iframe.name() === 'iFrameName';
});
尝试使用 contentFrame
await page.waitForSelector('iframe', { visible: true, timeout: 2000 });
const elementHandle = await page.$('iframe');
await page.waitFor(1000);
const frame = await elementHandle.contentFrame();
使用上述方法, elementHandle 具有一个值,但 frame 为空
我们正在与量角器进行合作,希望转移到Puppeteers,但是如果没有解决方案,则必须坚持使用量角器(它还有其他问题)
答案 0 :(得分:1)
当前,不支持out-of-process iframes (OOPIFs)
。为了能够与他们合作,您需要使用--disable-features=site-per-process
启动Chromium:
const browser = await puppeteer.launch({
args: ['--disable-features=site-per-process']
});
您可以跟踪人偶的问题/支持here。
答案 1 :(得分:0)
我有一个类似的问题,一个动态调用的 iframe,所以 src=(unknown) 带有一个 JS
href="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(VARİABLES,,true,,false,))
是否可以通过在 puppeteer 中调用 js 来克隆 The 或 iframe?如果是这样你可以试试。