是否有一些优雅的方法如何从nodeId
获取元素句柄?我得到所有节点的列表(和nodeIds),
const nodes = await page._client.send("DOM.querySelectorAll", {
nodeId: doc.root.nodeId,
selector: "*"
});
其中nodes.nodeIds
是整数列表。而我想以某种方式运行
const html = await page.$eval(nodeId, node => node.offsetParent === null);
检查元素是否可见。问题是page.$eval
期望将字符串(选择器)作为第一个参数。
我可以通过DOM.setAttributeValue
添加一个自定义属性,然后通过page.$eval
进行查询,但这似乎很麻烦。那么,从devtool-protocol
的nodeId到Puppeteer的ElementHandle
有没有更直接的方法呢?
答案 0 :(得分:0)
因此,有一种方法可以将人偶从ElementHandle
转到nodeId
。
const element = page.$('a');
const node = await page._client.send("DOM.requestNode", {
objectId: element._remoteObject.objectId
});
// <- { nodeId: 1 }
我最初的问题要求另一个方向(nodeId-> ElementHandle),但是我可以解决这个问题。尽可能默认情况下默认使用Puppeteer也更实用。