Puppeteer 和动态添加的 iFrame(元素)
Puppeteer and dynamically added iFrame (element)
我们有一个 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';
});
以上只有一帧(主要frame/window)。
已尝试 帧
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 为 null
我们与 Protractor 合作,希望转移到 Puppeteers,但如果没有解决方案,则必须坚持使用 Protractor(它有其他问题)
目前不支持out-of-process iframes (OOPIFs)
。为了能够使用它们,您需要使用 --disable-features=site-per-process
:
启动 Chromium
const browser = await puppeteer.launch({
args: ['--disable-features=site-per-process']
});
您可以跟踪人偶操纵者的 issue/support here。
我也有类似的问题,一个动态调用的iframe,让src=(unknown)跟一个JS
href="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(VARİABLES,,true,,false,))
是否可以通过在 puppeteer 中调用 js 来克隆 The 或 iframe?如果是这样你可以试试
我们有一个 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';
});
以上只有一帧(主要frame/window)。
已尝试 帧
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 为 null
我们与 Protractor 合作,希望转移到 Puppeteers,但如果没有解决方案,则必须坚持使用 Protractor(它有其他问题)
目前不支持out-of-process iframes (OOPIFs)
。为了能够使用它们,您需要使用 --disable-features=site-per-process
:
const browser = await puppeteer.launch({
args: ['--disable-features=site-per-process']
});
您可以跟踪人偶操纵者的 issue/support here。
我也有类似的问题,一个动态调用的iframe,让src=(unknown)跟一个JS
href="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(VARİABLES,,true,,false,))
是否可以通过在 puppeteer 中调用 js 来克隆 The 或 iframe?如果是这样你可以试试