Манипуляции с DOM на странице puppeteer.evaluation

Внутри функции 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».

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

adelriosantiago 05.03.2019 20:12

да, я использую page.goto('...', {"waitUntil" : "networkidle0"})

Ivan Fetsenets 05.03.2019 20:34

Одно можно сказать наверняка: element.nextElementSibling.querySelectorAll('.sblack')[0] не существует. Не могли бы вы вернуться раньше с return element.nextElementSibling.toString() и распечатать это в консоли, чтобы увидеть, что вы получите?

adelriosantiago 05.03.2019 20:59

Я понял, что его нет, но почему? element.nextElementSibling.toString() возвращает '[объект HTMLTableRowElement]

Ivan Fetsenets 05.03.2019 21:05

Да, это может быть немного странно. Хотя вы близки к разгадке. Кажется, что 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 05.03.2019 23:46

спасибо @adelriosantiago за помощь. Я использовал «puppeteer.launch({devtools: true})» и добавил «отладчик». После отладки я нашел ошибку в своем макете, теперь мой код работает как положено.

Ivan Fetsenets 06.03.2019 01:03

Так можешь опубликовать решение? :D

Md. Abu Taher 06.03.2019 06:16

выложенный код работает корректно, проблема была в файле который я открывал

Ivan Fetsenets 06.03.2019 08:49
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
8
330
0

Другие вопросы по теме