elementHandle。$$(selector)返回字符串,而不是elementHandles

时间:2018-10-19 14:45:28

标签: puppeteer

根据the puppeteer docs,使用elementHandle.$$(selector)返回ElementHandles数组或空数组。

但是我的代码返回一个字符串数组:

const table = await frame.$('#ID-rowTable tbody')
console.log('typeof table: ', typeof table); // object; it's an Element Handle
const trs = await table.$$('tr')

for (tr in trs) {
  console.log('tr: ', tr);  // 0, 1, 2, 3... (not even sure why numbers come out...)
  console.log('typeof tr: ', typeof tr); // string
}

我的猜测是,只有某些DOM元素可以用作ElementHandles,但是我找不到可接受的元素的列表,并且文档中也没有提到函数elementHandle.$$(selector)在这种情况下会返回除ElementHandles。

帮助?

1 个答案:

答案 0 :(得分:1)

您使用的是for .. in(对象)而不是for .. of(数组)

const table = await frame.$('#ID-rowTable tbody')
console.log('typeof table: ', typeof table); // object; it's an Element Handle
const trs = await table.$$('tr')

for (tr of trs) {
  console.log('tr: ', tr);  // 0, 1, 2, 3... (not even sure why numbers come out...)
  console.log('typeof tr: ', typeof tr); // string
}

有关差异的更详细说明:https://bitsofco.de/for-in-vs-for-of/