Puppeteer中page.evaluate无法识别传入的类名变量问题求助
问题原因
page.evaluate()的回调函数运行在浏览器的独立JS环境中,和你定义MyClassVariable的Node.js环境完全隔离——浏览器环境无法直接访问Node.js侧的变量,所以会抛出ReferenceError。
解决方法
直接将Node.js侧的变量作为参数传递给page.evaluate(),让浏览器环境能拿到这个值:
var MyClassVariable = "abc-class"; var testResult = await page.evaluate((className) => Array.from(document.getElementsByClassName(className), e => e.innerText), MyClassVariable // 把Node.js侧的变量传入浏览器环境 );
如果需要传递多个变量,按顺序追加参数即可:
var class1 = "abc-class"; var class2 = "def-class"; var result = await page.evaluate((c1, c2) => { // 在这里可以使用c1和c2 return [ Array.from(document.getElementsByClassName(c1), e => e.innerText), Array.from(document.getElementsByClassName(c2), e => e.innerText) ]; }, class1, class2);
内容的提问来源于stack exchange,提问作者Thompson
相关产品推荐
相关产品推荐

