【问题标题】:I don't find a way to scrolldown in puppeteer我找不到在 puppeteer 中向下滚动的方法
【发布时间】:2022-02-03 16:27:55
【问题描述】:

我想使用 puppeteer 在侧边栏中向下滚动。 有一个网站叫discord 我希望 puppeteer 在侧边栏加载后向下滚动整个侧边栏

原来如此

await page.waitForSelector('nav[aria-label="Servers sidebar"]')

然后我尝试了stackoverflow中的一些功能 但我没有成功:(

我可以从你们那里得到任何帮助吗?

【问题讨论】:

标签: javascript puppeteer


【解决方案1】:

页面加载后执行常规 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.waitForSelector('nav[aria-label="Servers sidebar"]')

await page.evaluate(() => {
  const element = document.querySelectorAll('nav[aria-label="Servers sidebar"]')[0];
  if(element){
    const y = element.getBoundingClientRect().top + window.pageYOffset;
    window.scrollTo({top: y});        
  } else {
    console.error('Element by selector was not found :(');
  }      
});

如果您的选择器将返回多个元素,请选择单个。虽然您需要单个 DOM 元素而不是这些元素的数组来获得边界矩形。就像我在示例代码中使用 [0] 选择第一个找到的一样

【讨论】:

    猜你喜欢
    • 2019-01-02
    • 2023-03-04
    • 2020-06-04
    • 2020-11-20
    • 1970-01-01
    • 1970-01-01
    • 2011-02-02
    • 2013-04-10
    • 1970-01-01
    相关资源
    最近更新 更多