Как получить доступ к обработчикам событий React с помощью Puppeteer - PullRequest
1 голос
/ 25 мая 2020

Я не совсем уверен, что понимаю, о чем прошу, и надеюсь, что кто-нибудь сможет объяснить. Я пытаюсь очистить веб-сайт с помощью Puppeteer на NodeJS. Я дошел до того, что выбрал нужный мне элемент и получил доступ к его свойствам, однако я не могу получить доступ к нужному мне свойству, чтобы получить нужную мне информацию. Информация, которую я хочу, находится в зеленом поле ниже, однако я не могу пройти мимо __reactEventHandlers$kq2rgk91p6, так как это просто возвращает undefined.

enter image description here

Я использовал следующий селектор, который работает и обращается ко всем остальным свойствам, но не к тому, который мне нужен.

    const checked = await page.evaluate(() => document.querySelector(stockSelector));

1 Ответ

1 голос
/ 25 мая 2020

Если я правильно понимаю (без URL-адреса и минимального воспроизводимого кода трудно угадать), проблема заключается в следующем: согласно документам, различные функции eval могут передавать только сериализуемые данные (примерно, данные JSON могут обрабатывать , с некоторыми дополнениями). Ваш код возвращает элемент DOM, который не может быть сериализован (у него есть методы и циклические ссылки). Попробуйте получить данные в контексте браузера и вернуть только сериализуемые данные. Например:

const data = await page.evaluate(
  selector => document.querySelector(selector)
    .__reactEventHandlers$kq2rgk91p6.children[1].props.record.Stock,
  selector,
);

Если массив в свойстве .Stock сериализуемый, вы получите данные.

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