如何将变量传递给puppeteer的$ eval中的回调?

时间:2018-04-15 19:15:36

标签: node.js puppeteer

在尝试访问 uid 时,由于 ReferenceError ,以下代码无效。我知道eval代码在浏览器的上下文中运行,因此无法访问此变量,但我不知道如何传递变量的值:

var uid = 'foo@example.com';
await page.$eval('#uid', el => el.value = uid);

1 个答案:

答案 0 :(得分:5)

page.$eval()的第三个参数传递参数,所以你会这样做:

await page.$eval('#uid', (el, _uid) => el.value = _uid, uid);

page.$eval() docs as of Puppeteer 1.3.0

  

页。$ eval(selector,pageFunction [,... args])

     
      
  • selector< string>用于查询
  • 页面的选择器   
  • pageFunction< function>要在浏览器上下文中评估的函数
  •   
  • ...args< ... Serializable | JSHandle>传递给pageFunction
  • 的参数   
  • 返回:< Promise< Serializable>>承诺解析为pageFunction
  • 的返回值