我有一个非常简单的Puppeteer脚本,用于exposeFunction()在无头Chrome中运行一些东西.
(async function(){
var log = console.log.bind(console),
puppeteer = require('puppeteer');
const browser = await puppeteer.launch();
const page = await browser.newPage();
var functionToInject = function(){
return window.navigator.appName;
}
await page.exposeFunction('functionToInject', functionToInject);
var data = await page.evaluate(async function(){
console.log('woo I run inside a browser')
return await functionToInject();
});
console.log(data);
await browser.close();
})()
Run Code Online (Sandbox Code Playgroud)
这失败了:
ReferenceError: window is not defined
Run Code Online (Sandbox Code Playgroud)
其中指的是注入的功能.如何window在无头Chrome内部进行访问?
我知道我可以做evaluate(),但这不适用于我动态传递的函数:
(async function(){
var log = console.log.bind(console),
puppeteer = require('puppeteer');
const browser = await puppeteer.launch(); …Run Code Online (Sandbox Code Playgroud) 我如何在一个内部$x()使用xpath表达式page.evaluate()?
至于page不在相同的上下文中,我$x()直接尝试(就像我在chrome开发工具中所做的那样),但没有雪茄.
脚本进入超时状态.