我正在使用 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
答案 0 :(得分:0)
您可以删除所有的 hrefs:
[...document.querySelectorAll('a[href]')].map(a => a.removeAttribute('href'))