Вы используете console.log
внутри page.evaluate
, поэтому он регистрирует свои выходные данные в браузере Chromium, а не на узле вывода.Чтобы видеть консольные сообщения из браузера в консоли узла, необходимо подписаться на них после создания объекта page
и до использования console.log
в сценарии:
const page = await browser.newPage();
page.on('console', consoleObj => console.log(consoleObj.text()));
page.evaluate(...);
Что касается переменной variable
, то здесьна самом деле два из них в вашем сценарии.
Первый существует в контексте node.js:
let variable = 0;
А другой - в контексте веб-страницы:
page.evaluate( () => {
variable = 1;
})
Они совершенно разные.Думайте о page.evaluate
как о портале в другой мир: объекты, которые существуют там, присутствуют только внутри среды выполнения javascript на странице, открытой в веб-браузере, который ведет puppeteer
.node
имеет собственную среду выполнения с собственным набором объектов.
Вы можете передавать данные в page.evaluate
из node
:
let variable = 420;
page.evaluate(variable => {
// it is now passed here from outside
console.log(variable)
}, variable);