Получение объекта JS с помощью Puppeteer - PullRequest
0 голосов
/ 14 марта 2019

Я надеюсь, что кто-то может направить меня в правильном направлении, я пытаюсь получить объект на странице с помощью Puppeteer.

Если я наберу следующее в веб-консоли, оно будет работать:

eval('__object.client[0]');

Это прекрасно работает, если я пытаюсь сделать это в Puppeteer, выполнив:

await page.exposeFunction('findPath', (search) => {
    console.log(eval('__object.client[0]'));
});

Он не извлекает объект, а только строку.

Что я сделал не так?

Спасибо всем.

1 Ответ

0 голосов
/ 14 марта 2019

Я думаю, что нужно помнить о некоторых понятиях:

exposeFunction не будет выполнять эту функцию.Он зарегистрирует эту функцию, чтобы вы могли затем вызвать findPath(foo) в контексте браузера .Код, который вы запускаете внутри предоставляемой функции , будет выполняться в контексте вашего приложения .Таким образом, eval не будет работать там.

evaluate должен выполнить эту работу за вас:

console.log(await page.evaluate(() => {
   return eval('document.title');
}));

С evaluate вы должны иметь в виду, что код будетвыполняться в контексте браузера.Таким образом, вы не будете читать журнал консоли на стороне приложения (если только вы не прослушиваете событие журнала).

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