首页 > 解决方案 > 防止木偶操纵者离开

问题描述

我正在使用 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

标签: javascriptgoogle-chromeautomated-testspuppeteer

解决方案


你可以删除所有的href:

[...document.querySelectorAll('a[href]')].map(a => a.removeAttribute('href'))

推荐阅读