Внутри функции PuppeteerJS page.evaluate(). Мне нужно найти элемент с классом "sblack" внутри родственного элемента.
Может кто поможет со следующей проблемой:
document.querySelectorAll('.result-main').forEach(function(element) {
let nextEl = element.nextElementSibling.querySelectorAll('.sblack')[0].innerText;
matches.push({
_id: element.querySelector('.bet-number').innerText,
bet_date: element.querySelector('.date').textContent,
matchDate: nextEl
});
});
Я получаю сообщение об ошибке «TypeError: Cannot read property 'innerText' of undefined», но я ожидал получить текст внутри элемента с классом «sblack».
да, я использую page.goto('...', {"waitUntil" : "networkidle0"})
Одно можно сказать наверняка: element.nextElementSibling.querySelectorAll('.sblack')[0] не существует. Не могли бы вы вернуться раньше с return element.nextElementSibling.toString() и распечатать это в консоли, чтобы увидеть, что вы получите?
Я понял, что его нет, но почему? element.nextElementSibling.toString() возвращает '[объект HTMLTableRowElement]
Да, это может быть немного странно. Хотя вы близки к разгадке. Кажется, что element.nextElementSibling существуют. Поэтому проблема в querySelectorAll. Несколько рекомендаций: Запустите Puppeteer в headless режиме false, чтобы видеть экран и console.info каждый шаг. Также имейте в виду, что querySelectorAll ведет себя иначе: developer.mozilla.org/en-US/docs/Web/API/Document/…. Вы также можете просто внедрить jQuery в Puppeteer и использовать что-то вроде $('.result-main .sblack').innerText. На самом деле, скорее всего, jQuery уже существует.
спасибо @adelriosantiago за помощь. Я использовал «puppeteer.launch({devtools: true})» и добавил «отладчик». После отладки я нашел ошибку в своем макете, теперь мой код работает как положено.
Так можешь опубликовать решение? :D
выложенный код работает корректно, проблема была в файле который я открывал



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы пытались запустить этот код в обычной консоли браузера? Код выглядит правильно. Я подозреваю, что имя класса неверно... Вы также можете попробовать подождать некоторое время, пока страница полностью не загрузится с
await page.goto('...', {"waitUntil" : "networkidle0"});