根据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。
帮助?
答案 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/