如何在Puppeteer的page.$eval中传递link变量修改指定href?
解决Puppeteer中$eval无法传递外部变量的问题
问题出在page.$eval的回调函数运行在浏览器的沙箱上下文里,和你的Node.js代码上下文完全隔离——直接在回调里使用外部的link变量时,浏览器环境根本找不到这个变量。
解决方法很简单,把link作为额外参数传递给$eval的第三个参数位置,这样回调函数就能接收并使用这个变量了:
await page.$eval( 'a[href="https://old.reddit.com/r/LSD/comments/18t1rp7/do_you_think_of_acid_as_the_king_drug/"]', (el, targetLink) => el.href = targetLink, link // 把外部变量作为第三个参数传入 )
如果需要传递多个变量,也可以直接传一个对象或者数组:
// 传递多个变量的对象示例 await page.$eval( 'a[href="https://old.reddit.com/r/LSD/comments/18t1rp7/do_you_think_of_acid_as_the_king_drug/"]', (el, data) => { el.href = data.newLink; el.textContent = data.newText; }, { newLink: link, newText: '新链接文本' } )
内容的提问来源于stack exchange,提问作者Amit Morad
相关产品推荐
相关产品推荐

