How to create an object or associative array with puppeteer evaluate or eval methods?

问题描述 投票:0回答:1

我可以很容易地从一组选择器中获得一些单一的属性,但不能创建某种对象或具有某些“键”和“值”的关联数组。

这适用于 2 个属性

const kefs = await page.$$eval("div[data-event-treeid]", msgs =>
  msgs.map(msg => {
    return {
      name: msg.getAttribute("data-event-treeid"),
      textMessage: msg.innerText,
    };
  })
);
console.log("kefs", kefs);

但我无法得到像

kefs['data-event-treeid']=innerText

这样的东西
const kefs = await page.$$eval('div[data-event-treeid]', (msgs) => 
  msgs.map((msg[msgs.getAttribute('data-event-treeid')]) => {
    return {
      textMessage: msg.innerText
    }
  })
);
console.log('kefs', kefs);

所以我想得到:

kefs = {"111": "Sometext", "222": "SomeOtherText"}

其中键 111 和 222 是“data-event-treeid”属性的值

javascript arrays puppeteer eval evaluate
1个回答
1
投票

谢谢@ggorlen 它对我有用

const kefs = Object.fromEntries(
  await page.$$eval("div[data-event-treeid]", msgs =>
    msgs.map(msg => [
      msg.getAttribute("data-event-treeid"),
      msg.innerText,
    ])
  )
);
console.log("kefs", kefs);
© www.soinside.com 2019 - 2024. All rights reserved.