在puppeteer中调用evaluate时,会出现如下错误。 '评估失败:ReferenceError:cov_mjds8ir32 未定义'
“page.$eval”也出现同样的错误
page = await browser.newPage();
await page.goto("https://myurl.com",{timeout: 5000, waitUntil: "networkidle2"});
await page.evaluate(() => {
console.log("log");
});
const userid = 'myid';
page = await browser.newPage();
await page.goto("https://myurl.com",{timeout: 5000, waitUntil: "networkidle2"});
await page.$eval('#input[name=userid]', el => el.value = userid);
首先,我猜你的选择器是
input[name=userid]
而不是 #input[name=userid]
。
$eval
签名是
$eval<Selector extends string, Params extends unknown[],
Func extends EvaluateFuncWith<NodeFor<Selector>, Params> =
EvaluateFuncWith<NodeFor<Selector>, Params>>(selector: Selector,
pageFunction: Func | string, ...args: Params)
其中
pageFunction
是 Function
和 ...args
是可以传递给该函数的参数。
函数本身有它自己的可见范围。 它在
page
上下文中执行,页面上下文对测试上下文一无所知。
要使函数看到测试上下文中的变量,您应该将它们作为函数参数传递。
await page.$eval('input[name=userid]', (el, _userId) => el.value = _userid, userId);