我处于向下滚动时会创建新内容的情况。新内容具有特定的类名称。
我如何继续向下滚动直到所有元素加载完毕?换句话说,我想达到一个阶段,如果我继续向下滚动,则不会加载任何新内容。
我正在使用代码向下滚动,再加上
await page.waitForSelector('.class_name');
这种方法的问题在于,在所有元素加载完之后,代码将继续向下滚动,没有创建新元素,最终我收到超时错误。
编辑:这是代码
await page.evaluate( () => { window.scrollBy(0, window.innerHeight); }); await page.waitForSelector('.class_name');
试一下:
const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch({ headless: false }); const page = await browser.newPage(); await page.goto('https://www.yoursite.com'); await page.setViewport({ width: 1200, height: 800 }); await autoScroll(page); await page.screenshot({ path: 'yoursite.png', fullPage: true }); await browser.close(); })(); async function autoScroll(page){ await page.evaluate(async () => { await new Promise((resolve, reject) => { var totalHeight = 0; var distance = 100; var timer = setInterval(() => { var scrollHeight = document.body.scrollHeight; window.scrollBy(0, distance); totalHeight += distance; if(totalHeight >= scrollHeight){ clearInterval(timer); resolve(); } }, 100); }); }); }
资料来源:https : //github.com/chenxiaochun/blog/issues/38