评估失败:调用评估函数时出现ReferenceError

问题描述 投票:0回答:1

在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);
puppeteer referenceerror evaluate
1个回答
0
投票

首先,我猜你的选择器是

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);
© www.soinside.com 2019 - 2024. All rights reserved.