获取 puppeteer 中元素的子元素

Ale*_*lex 4 jquery node.js puppeteer

所以我的目标是计算一个 div 类中包含多个 div 的子级的数量;我通过选择 div 然后使用children属性来做到这一点,然后我计算子项及其length属性并打印它。

为了实现我的目标,我尝试在 puppeteer 中实现此代码:

$('div[data-test-selector="center-window__content"]').children
Run Code Online (Sandbox Code Playgroud)

(在 chrome 调试控制台上完美运行)

这是我转换后的代码:

let childrens = await page.evaluate(() => document.querySelector('div[data-test-selector="center-window__content"]'), i => Array.from(i.children));
Run Code Online (Sandbox Code Playgroud)

然而,该表达式的计算结果为undefined

在他们的文档中evaluate说:

如果传递给 page.evaluate 的函数返回不可序列化的值,则 page.evaluate 解析为 undefined。

这里是这样吗?我该如何修复它?

提前致谢。

编辑

所以最后我认为木偶操作者由于某种原因无法序列化子数组。

我最终使用了它:

const notifs = await page.evaluate(() => {
            return (Array.from(document.querySelector('[data-test-selector="center-window__content"]').children).length);
})
Run Code Online (Sandbox Code Playgroud)

感谢@TerryLennox 的帮助。

Ter*_*nox 5

您可以尝试一下:

const children = await page.evaluate(() => {
    return (Array.from(document.querySelector('div[data-test-selector="center-window__content"]').children).length);
})
console.log("Result:", children);
Run Code Online (Sandbox Code Playgroud)

对此进行测试

html

<html>
<div data-test-selector="center-window__content">
    some text
    <div>Child 1</div>
    <div>Child 2</div>
    <div>Child 3</div>
</div>
</html>
Run Code Online (Sandbox Code Playgroud)

  • 所以这段代码: `const Children = wait page.evaluate(() =&gt; { return (Array.from(document.querySelector('div[data-test-selector="centerwindow__content"]').children).length); })`为我工作。 (3认同)