我希望能够在页面加载后停止任何脚本在puppeteer中运行。这样做的原因是停止轮播图像和延迟加载图像,并实质上使页面具有尽可能静态的行为,以启用图像未更改的屏幕截图等。
通过执行page.evaluate('debugger;')
,可以暂停整个脚本,但这不能让您继续进行屏幕截图,因为evaluate
函数只有在退出调试器后才会退出(如果gui被启用)
最佳答案
如果您想在页面加载后禁用JavaScript,则可以使用 debugger
:
await page.evaluate(() => {
debugger;
});
使用调试器后,我可以截取屏幕截图。
或者,您可以将每个原始节点替换为其克隆,以删除附加到每个元素的事件:
await page.evaluate(() => {
document.querySelectorAll('*').forEach(element => {
element.parentNode.replaceChild(element.cloneNode(true), element);
});
});
您也可以在类似于上述循环的循环中使用
removeEventListener()
删除附加到节点的特定事件。否则,如果可以在页面加载之前禁用JavaScript,则可以在导航到页面之前使用
page.setJavaScriptEnabled()
:await page.setJavaScriptEnabled(false);
关于google-chrome-devtools - 如何停止Puppeteer中的所有JS脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51897899/