puppeteer で、ほどほどの速度で自動スクロールさせるコード
puppeteer で、ほどほどの速度で目的の要素の位置に自動スクロールさせるコードを書いた。
await page.evaluate(async () => {
const targetClass = ".target_class";
const hh = document.querySelector(targetClass).offsetHeight;
await new Promise((resolve, reject) => {
const moved = 100;
let _top = 0;
let timer = setInterval(() => {
window.scrollBy(0, moved);
_top += moved;
if (_top > hh) {
clearInterval(timer);
resolve();
}
}, 100);
});
});
targetClass に、適当なセレクタを指定の事。 最初は、
await page.evaluate(async () => {
const targetClass = ".target_class";
const hh = document.querySelector(targetClass).offsetHeight;
window.scrollTo(0, hh);
});
というシンプルなコードを書いていたのだが、これだとIntersection Observer的な奴の処理が上手く走らなかったので、少し面倒くさいコードを書くに至った。 これならば、ちょっとずつスクロールしてくれるので、Intersection Observer に何か仕込んでいるサイトでもちゃんと動いてくれる。
コメント
コメントを投稿