我正在尝试在Frame内执行功能,但没有成功。
await page.evaluateHandle(()=>{
console.log(window.document.getElementsByTagName("frame")[3].contentWindow)
console.log(window.document.getElementsByTagName("frame")[3].contentWindow.fiAbrePagina)
});
在控制台日志中看到该功能存在于对象中,但是当我尝试访问该功能时,它不存在。
查看控制台并检查窗口对象是否存在该功能:
我需要帮助,如何在框架内执行功能?
答案 0 :(得分:1)
您可以使用page.frames()
获取该页面上所有框架的数组。然后,您可以使用frame.evaluate()
在特定框架内的浏览器上下文中执行功能。
还要确保在页面DOM环境中使用page.on('console')
处理console.log()
:
page.on('console', msg => {
for (let i = 0; i < msg.args().length; ++i)
console.log(`${i}: ${msg.args()[i]}`);
});
const frame = page.frames().find(frame => frame.name() === 'example');
await frame.evaluate(() => {
console.log(window.fiAbrePagina);
});
答案 1 :(得分:0)
您可以使用frame元素中的contentFrame来完成此操作,
let frameElement = await page.evaluateHandle(() => window.document.getElementsByTagName("frame")[3]);
frameElement = await frameElement.asElement();
const frameContentFrame = await frameElement.contentFrame();
await frameContentFrame.evaluate(() => console.log(fiAbrePagina.toString()));