【发布时间】:2020-06-04 12:46:29
【问题描述】:
我看到有像page.mouse.down() 这样的函数,但它什么也没做。
你知道滚动的方法吗?
【问题讨论】:
标签: javascript puppeteer
我看到有像page.mouse.down() 这样的函数,但它什么也没做。
你知道滚动的方法吗?
【问题讨论】:
标签: javascript puppeteer
页面加载后执行常规 JS 滚动到某个元素:
https://developer.mozilla.org/en-US/docs/Web/API/Window/scrollTo 或 https://developer.mozilla.org/en-US/docs/Web/API/Window/scrollBy
如果您想要滚动到某个特定的 DOM 元素,则需要它与顶部的偏移量。
例如:
await page.evaluate(() => {
const element = document.getElementById('some-id');
const y = element.getBoundingClientRect().top + window.pageYOffset;
window.scrollTo({top: y});
});
当然,您可以使用任何选择器,而不仅仅是通过 id。但请确保选择单个 DOM 元素以使用 getBoundingClientRect()
【讨论】:
page.mouse.down() 用于模拟鼠标点击,而不是滚动。这就是为什么它不能做你想做的事。
您可能需要查看在page.evaluate(...) 范围内使用的window.scrollTo 或window.scrollBy 函数(其中window 变量可用)。然后,您可以通过给定的distance 滚动页面。请看下面已经给出答案的话题:Puppeteer - scroll down until you can't anymore
【讨论】: