nodeId для элемента управления - PullRequest
0 голосов
/ 20 мая 2019

Есть ли какой-нибудь элегантный способ получить дескриптор элемента из nodeId?Я получаю список всех узлов (и ID узла) по

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 nodeIds к Puppeteer's ElementHandle?

1 Ответ

0 голосов
/ 21 мая 2019

Таким образом, есть способ, как перейти от Кукловода ElementHandle к nodeId.

const element = page.$('a');
const node = await page._client.send("DOM.requestNode", {
  objectId: element._remoteObject.objectId
});
// <- { nodeId: 1 } 

Мой первоначальный вопрос требует другого направления (nodeId -> ElementHandle), но я могу работать с этим,Также более практично использовать Puppeteer по умолчанию, когда это возможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...