Node.js Puppeteer中如何将const变量传入await page.$eval方法?
报错原因
page.$eval 的回调函数会被序列化后传入浏览器上下文执行,你在Node.js环境定义的dourl2属于Node侧变量,浏览器上下文无法直接访问,因此会抛出未定义错误。你使用的'{dourl2}'只是普通字符串,不会自动替换为对应变量值。
解决方法
page.$eval 从第三个参数开始支持传入自定义变量,这些变量会按顺序传递给回调函数的入参,你可以按照如下方式修改代码:
// 1. 获取原有href const dourl = await page.$eval("#dodaj_do_koszyka"+ link, el => el.href); // 2. 拼接新链接 const dourl2 = dourl + '000'; // 3. 传入变量赋值href await page.$eval("#dodaj_do_koszyka" + link, (element, newHref) => { element.href = newHref }, dourl2);
如果需要传递多个变量,按顺序在回调函数后追加参数即可,示例如下:
// 多变量传参示例 await page.$eval(选择器, (element, 参数1, 参数2, 参数3) => { // 浏览器侧逻辑 }, 变量1, 变量2, 变量3)
内容的提问来源于stack exchange,提问作者maya5510
相关产品推荐
相关产品推荐

