Как получить глобальную переменную окна без async / await в кукловоде - PullRequest
0 голосов
/ 12 декабря 2018

Я работаю над кукловодом в узле js версии 6. Поскольку узел js версии 6 не поддерживает async / await, мне нужен способ получить глобальные переменные в функции оценки.

Я пробовал следующее, но нетудачи.

let _browser;
let _page;
puppeteer
  .launch()
  .then(browser => (_browser = browser))
  .then(browser => (_page = browser.newPage()))
  .then(page => page.goto('https://mywebsite.com')) // not actual page
  .then(() => _page)
  .then((page) => page.evaluate(()=>{
        console.log("sdasd");// no output here
        console.log(globalvar); // its the global variable
        console.log("aaaaa"); // no output here
        return Promise.resolve("a")
    })
  )
  .then(() => _browser.close());

, когда я пытался сделать скриншот, он работал

puppeteer
 .launch()
 .then(browser => (_browser = browser))
 .then(browser => (_page = browser.newPage()))
 .then(page => page.goto('https://example.com'))
 .then(() => _page)
 .then(page => page.screenshot({ path: 'example.png' }))
 .then(() => _browser.close());

1 Ответ

0 голосов
/ 12 декабря 2018

Когда вы выполняете метод evaluate, он фактически выполняется в контексте страницы , т.е.в вашем удаленном браузере.Вот почему вы не видите никаких выводов из ваших console.log операторов: они фактически выполняются в браузере, а не выводятся в окно терминала / командной строки.

Для чегоВы хотите сделать, вы должны быть в состоянии сделать что-то вроде этого:

.then((page) => {
  return page.evaluate(() => {
    return globalVar;
  });
})
.then((globalVarHere) => {
  console.log(globalVarHere); // Should output the value
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...