功能setValue
接收一个值并返回一个函数。在第二个函数中,我试图控制台记录以下值value
但我得到
Error: Evaluation failed: ReferenceError: value is not defined
我的代码如下。可以对其进行测试尝试木偶戏,只需复制并粘贴我的代码并删除require
陈述。
const puppeteer = require('puppeteer');
(async () => {
const USERNAME = 'helloworld';
const setValue = (value) => (input) => { console.log(value) };
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('http://example.com');
await page.$eval('.selector', setValue(USERNAME));
await browser.close();
})();
这是在 Node.js 中执行并在浏览器中评估代码的任何库(Protractor、TestCafe、Nightmare 等)中常见的问题。函数被字符串化并作为字符串传递到浏览器。原范围(input) => { console.log(value) }
丢失了,并且value
预计是一个全局的,这是未定义的。
As 文档提到,额外的参数应该传递给$eval
.
它应该是:
await page.$eval('.selector', (el, value) => { console.log(value) }, USERNAME);
console.log
可以工作,但显然不会在 Node 控制台中显示任何内容,因为它指的是浏览器控制台。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)