Rex*_*zle 10 google-chrome-devtools puppeteer
我希望能够在页面加载后阻止任何脚本在 puppeteer 中运行。这样做的原因是停止轮播图像和延迟加载图像,并基本上使页面尽可能静态地运行,以启用图像不变的屏幕截图等。
通过这样做page.evaluate('debugger;')可以暂停整个脚本,但这不会让您继续拍摄屏幕截图,因为 aevaluate函数在您退出调试器之前不会退出(如果启用了 gui)
如果您想在页面加载后禁用 JavaScript,您可以使用debugger:
await page.evaluate(() => {
debugger;
});
Run Code Online (Sandbox Code Playgroud)
使用调试器后,我能够截取屏幕截图。
或者,您可以用其克隆替换每个原始节点以删除附加到每个元素的事件:
await page.evaluate(() => {
document.querySelectorAll('*').forEach(element => {
element.parentNode.replaceChild(element.cloneNode(true), element);
});
});
Run Code Online (Sandbox Code Playgroud)
您还可以removeEventListener()在类似于上述循环的循环中使用以删除附加到节点的特定事件。
否则,如果您可以在页面加载之前禁用 JavaScript,则可以page.setJavaScriptEnabled()在导航到该页面之前使用:
await page.setJavaScriptEnabled(false);
Run Code Online (Sandbox Code Playgroud)
更好的解决方案是阻止所有类型等于的请求script:
const puppeteer = require("puppeteer");
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.setRequestInterception(true);
page.on("request", request => {
if (request.resourceType() === "script") {
request.abort()
} else {
request.continue()
}
})
await page.goto("https://stackoverflow.com/")
await browser.close()
})()
Run Code Online (Sandbox Code Playgroud)
小智 5
const page = await browser.newPage()
page.setJavaScriptEnabled(false)
Run Code Online (Sandbox Code Playgroud)
Rex*_*zle -2
给朋友打电话后,以下似乎有效:
await page.evaluate('document.body.innerHTML = document.body.innerHTML')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8226 次 |
| 最近记录: |