相关疑难解决方法(0)

如何使用 Puppeteer 在 div 内滚动?

我想使用 Puppeteer 在具有滚动条但整个窗口没有滚动条的 div 内滚动。让我们以以下 URL 为例:

https://www.google.com/maps/place/DO+%26+CO+Restaurant+Stephansplatz/@48.2082385,16.3693837,17z/data=!4m7!3m6!1s0x476d079f2c500731:0xed!23384d.24b!2348d.2384d.2082384d. 3715725!9m1!1b1

您可以在左侧看到评论,并且整个部分都有一个滚动条。快速检查元素显示整个事物被一个具有以下类的 div 包围widget-pane-content scrollable-y。所以,我尝试做这样的事情:

const scrollable_section = 'div.widget-pane-content.scrollable-y';
await page.evaluate((selector) => {
    const scrollableSection = document.querySelector(selector);
    scrollableSection.scrollTop = scrollableSection.offsetHeight;
}, scrollable_section);
Run Code Online (Sandbox Code Playgroud)

但是,这没有用。我还注意到,单击空格按钮,如果它集中在评论部分,它也会自动向下滚动。所以,我也尝试做这样的事情:

await page.focus(scrollable_section);
await page.keyboard.press('Space');
Run Code Online (Sandbox Code Playgroud)

但是,这似乎也不起作用。任何想法如何使用 Puppeteer 在 div 内滚动?

javascript puppeteer

5
推荐指数
1
解决办法
1万
查看次数

page.vs. Puppeteer $方法

我对这两个代码块的差异感兴趣。

const $anchor = await page.$('a.buy-now');
const link = await $anchor.getProperty('href');
await $anchor.click();
Run Code Online (Sandbox Code Playgroud)
await page.evaluate(() => {
    const $anchor = document.querySelector('a.buy-now');
    const text = $anchor.href;
    $anchor.click();
});
Run Code Online (Sandbox Code Playgroud)

通常,我发现原始DOM元素page.evaluate()更易于使用,而$方法返回的ElementHandles是到目前为止的抽象。

但是我也许觉得异步Puppeteer方法可能更高效或更可靠?我在文档中找不到关于此的任何指导,并且有兴趣了解有关每种方法的专业人士/专业人士以及添加诸如之类的方法背后的动机的更多信息page.$$()

javascript node.js puppeteer

3
推荐指数
1
解决办法
434
查看次数

标签 统计

javascript ×2

puppeteer ×2

node.js ×1