javascript - 防止木偶操纵者离开
问题描述
我正在使用 puppeteer 在渲染页面上执行一些测试。
其中一项测试是单击页面上的每个元素,然后测量文档正文以查看是否有任何元素附加了调整大小事件。
问题是,如果一个元素是指向另一个页面的链接,puppeteer 就会离开(如预期的那样)。我想防止这种行为。
我曾尝试使用 setInterceptionRequest,但这样做时出现错误。包括我的代码的相关部分和错误。
谁能建议最好的方法来实现这一点?
const browser = await puppeteer.getBrowser();
const page = await browser.newPage();
await page.setContent(html);
await page.setRequestInterception(true);
page.on('request', request => {
if (request.resourceType() === 'document') {
request.abort();
} else {
request.continue();
}
});
let elements = await page.$$('body *');
for (let i = 0; i < elements.length; i++) {
const element = elements[i];
await element.click()
}
Error: Protocol error (Runtime.callFunctionOn): Argument should belong to the same JavaScript world as target object
解决方案
你可以删除所有的href:
[...document.querySelectorAll('a[href]')].map(a => a.removeAttribute('href'))
推荐阅读
- c++ - NIF 引发分段错误,而加载函数有 try catch 块来处理异常
- cuda - 当 MPI_FLOAT 的 count > 64 时,MPI_send 和 MPI_recv 挂起
- laravel - Laravel - 修改停用用户的响应文本
- vcpkg - 无法在 Visual Studio 代码上安装库
- windows - MAKECAB 指令等效于 CABARC -i Identity
- swift - Swift WebKit NSNotification Observer 没有收到已发布的通知
- node.js - docker化节点应用程序时应该在哪里设置数据库?
- java - 从 Java 活动中调用 kotlin 类
- python - 在 for 循环中创建多个文本文档
- python - 如何使用 python 组织数据集?