Javascript 如何在Puppeter中不使用async/await获取窗口的全局变量
我正在节点js版本6中研究木偶演员。因为NodeJSVersion6不支持async/await,所以我需要一种在evaluate函数中获取全局变量的方法 我尝试了以下方法,但没有成功Javascript 如何在Puppeter中不使用async/await获取窗口的全局变量,javascript,node.js,puppeteer,Javascript,Node.js,Puppeteer,我正在节点js版本6中研究木偶演员。因为NodeJSVersion6不支持async/await,所以我需要一种在evaluate函数中获取全局变量的方法 我尝试了以下方法,但没有成功 let _browser; let _page; puppeteer .launch() .then(browser => (_browser = browser)) .then(browser => (_page = browser.newPage())) .then(page =&
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());
执行
evaluate
方法时,它实际上是在页面上下文中执行的,即在远程浏览器中执行。这就是为什么您看不到来自控制台.log
语句的任何输出:它们实际上是在浏览器中执行的,而不是在终端/命令行窗口中执行并输出
对于您希望做的事情,您应该能够做到以下几点:
.then((page) => {
return page.evaluate(() => {
return globalVar;
});
})
.then((globalVarHere) => {
console.log(globalVarHere); // Should output the value
});
.then(page=>page.evaluate('globalVar'))。然后(console.log)
对于那些认为此处的页面上下文令人困惑的人,您可能希望将全局变量作为名称string
传递,以明确它不在当前上下文中。