node.js - 使用 puppeteer 如何获取 Node 的所有子 Node ?

标签 node.js google-chrome-devtools puppeteer headless-browser

我无法找到一种方法来在 puppeteer 中迭代给定 Node 的子 Node 。事先不知道html结构,只知道父元素的id。

var elemId = "myelemid";

const doc = await page._client.send('DOM.getDocument');
const node = await page._client.send('DOM.querySelector', {
    nodeId: doc.root.nodeId,
    selector: '#' + elemId
});
//node.children empty
//node['object'].children empty

//try requesting childnodes
var id = node.nodeId;   
var childNodes = await page._client.send('DOM.requestChildNodes', {
   nodeId: id
});         
//childNodes empty

//try requesting by resolveNode?
var aNode = await page._client.send('DOM.resolveNode', {
   nodeId: id
});      
//aNode.children is empty

如果您不知道 puppeteer 中的 html 结构,有没有办法获取 Node 的子 Node ?

最佳答案

我在这里要做的是使用 Puppeteer 的 evaluate 方法将 Node 的子元素返回给脚本,如下所示:

const nodeChildren = await page.$eval(cssSelector, (uiElement) => {
  return uiElement.children;
});
console.log(nodeChildren); // Outputs the array of the nodes children

希望这对您有所帮助!

关于node.js - 使用 puppeteer 如何获取 Node 的所有子 Node ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53700494/

相关文章:

javascript - NodeJS : invalid array length Allocation failed - JavaScript heap out of memory

node.js - 如何在 Ubuntu 12.04 上安装 jasmine-node?

node.js - puppeteer - 第一次调用 browser.newPage super 慢

javascript - 如何告诉 pm2 在部署时使用特定的节点版本

google-chrome-devtools - 无法添加文件系统权限被拒绝

javascript - Chrome Dev Tools - 通过页面重新加载记住选择的元素

javascript - 如何通过 chrome-remote-interface 远程评估 Angular 应用程序的 promise

javascript - 带有 NodeJS 问题的 Youtube 数据 API

node.js - 是否有人使用 Amazon OpsWorks 成功部署了 Node (快速)应用程序?

node.js - 从 Node.js 发送的字节数组中以 Angular 下载文件