【问题标题】:How do I pass a variable to a callback in puppeteer's $eval?如何将变量传递给 puppeteer 的 $eval 中的回调?
【发布时间】:2018-04-15 19:15:35
【问题描述】:

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

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

【问题讨论】:

    标签: node.js puppeteer


    【解决方案1】:

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

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

    page.$eval() docs as of Puppeteer 1.3.0:

    page.$eval(selector, pageFunction[, ...args])

    • selector 查询页面的选择器
    • pageFunction 在浏览器上下文中评估的函数
    • ...args <...serializable> 传递给 pageFunction 的参数
    • 返回:> Promise 解析为pageFunction 的返回值

    【讨论】:

    • 小修正,应该是:await page.$eval('#uid', (el, _uid) =&gt; el.value = _uid, uid);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多