Puppeteer 滚动截屏

1,097 阅读1分钟

puppeteer 练习,滚动截全屏网页 测试


async function autoScroll(page) {
  return page.evaluate(function () {
    return new Promise((resolve, reject) => {
      let totalHeight = 0;
      let distance = 500;
      //每200毫秒滚动100px
      let timer = setInterval(() => {
        let scrollHeight = document.body.scrollHeight;
        
        window.scrollBy(0, distance);
        totalHeight += distance
        if (totalHeight >= scrollHeight) {
          window.scrollTo(0, 0);
          clearInterval(timer);
          resolve()
        }
      }, 1000);
    })
  })
}
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    await page.setViewport({
      width: 1920,
      height: 1080,
      deviceScaleFactor: 1,
    });
    await page.goto('https://juejin.cn/', {
      timeout: 30 * 1000,
      waitUntil: [
          'load',              //等待 “load” 事件触发
          'domcontentloaded',  //等待 “domcontentloaded” 事件触发
          'networkidle0',      //在 500ms 内没有任何网络连接
          'networkidle2'       //在 500ms 内网络连接个数不超过 2 个
      ]
  });
  await autoScroll(page)
  await page.screenshot({path: 'juejin.png', fullPage: true});
  await browser.close();
})();