node.js - 如何使用 mouse.wheel 在 puppeteer 5.1.0 中向右滚动?

标签 node.js puppeteer

我在这个页面上有一个网格。最后一列在屏幕右侧。我想阅读标题单元格文本。
我看到了这个片段
https://pptr.dev/#?product=Puppeteer&version=v5.1.0&show=api-class-mouse
所以我在cucumber/puppeteer中运行了下面的代码。没有错误,但浏览器中什么也没发生。那么如何使用此功能或任何其他方式向右滚动。
我不能使用 querySelector... 来获取标题,因为在列可见之前选择器不存在。请指教。

async function scrollRight() {
   await this.page.mouse.wheel({ deltaX: 2500 })
}

最佳答案

您的 scrollRight()函数应该有一部分 鼠标悬停在右列上。 在链接的例子中有一个 page.mouse.move(x,y) 这也应该适用于您的情况。
要获取列的 X Y 坐标,您可以使用 elementHandle.boundingBox puppeteer 功能。使用简单的公式,您可以将光标精确定位到列的中心。
例如。:

async function scrollRight() {
  const elem = await page.$('.last-column');
  const boundingBox = await elem.boundingBox();
  await page.mouse.move(
    boundingBox.x + boundingBox.width / 2, // x
    boundingBox.y + boundingBox.height / 2 // y
  );

 await page.mouse.wheel({ deltaX: 2500 });
}
要检查列的可见性,您可以使用 page.waitForSelector visible: true选项,等待元素可见,即没有 display: nonevisibility: hidden CSS 属性。默认为 false ,因此如果它在您的用例中导致问题不可见,它可能会有所帮助。
await page.waitForSelector('.last-column', {
  visible: true,
});

关于node.js - 如何使用 mouse.wheel 在 puppeteer 5.1.0 中向右滚动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62962817/

相关文章:

javascript - Jest 中的覆盖范围不包括分支

javascript - 如何使用 Vue.js(使用 Vueify)通过组件显示数据?

node.js - Twitter 获取状态/user_timeline

node.js - 访问时 puppeteer 的截图是否被捕获?

javascript - Puppeteer - 向下滚动,直到你不能再

ssl-certificate - 忽略证书错误 + headless puppeteer + google cloud

node.js - 设计 Nodejs Web 应用程序

node.js - Sails.js Waterlock - 唯一的用户名

javascript - 无法在 node.js 控制台上打印 puppeteer 响应

javascript - Puppeteer 无法上传文件,出现 TypeError : Failed to fetch