elementHandle. $$ (селектор) возвращает строки вместо elementHandles - PullRequest
0 голосов
/ 19 октября 2018

Согласно документам кукловода , использование 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
}

Я предполагаю, что в качестве ElementHandles могут использоваться только определенные элементы DOM, но я не могу найти список принятых элементов, и в документации не упоминается, в каком случае функция elementHandle.$$(selector) будет возвращать массив чего-то другого, кроме ElementHandles..

Помощь?

1 Ответ

0 голосов
/ 20 октября 2018

Вы используете 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/

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