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();
})();