防止木偶操纵者离开

时间:2021-05-25 14:00:22

标签: javascript google-chrome automated-tests puppeteer

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

1 个答案:

答案 0 :(得分:0)

您可以删除所有的 hrefs:

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