Reputation: 9
I can easily get some single attribute from set of selectors, but cannot create some sort of object or associative array with some "key" and "value".
This works with 2 attributes
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);
but I cannot get something like 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);
So I want to get:
kefs = {"111": "Sometext", "222": "SomeOtherText"}
Where keys 111 and 222 are values of 'data-event-treeid' attributes
Upvotes: 0
Views: 93
Reputation: 9
Thank you @ggorlen It works for me with
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);
Upvotes: 1