在操纵up中获得元素的子代

时间:2020-05-18 09:04:11

标签: jquery node.js puppeteer

因此,我的目标是计算其中包含多个div的div类的子级数目;为此,我选择了div,然后使用children属性,然后使用其length属性对子级进行计数并打印。

为了实现我的目标,我试图在puppeteer中实现以下代码:

$('div[data-test-selector="center-window__content"]').children

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

这是我转换后的代码:

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

但是此表达式的计算结果为undefined

evaluate的文档中,有人说:

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

是这种情况吗?我该如何解决?

谢谢。

编辑

所以最终我认为由于某些原因,操纵up的人无法序列化children数组。

我最终使用了它:

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

感谢@TerryLennox的帮助。

1 个答案:

答案 0 :(得分:2)

您可以尝试一下:

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

对此进行测试

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>