And*_*ano 2 javascript node.js google-chrome-headless puppeteer
该函数setValue接收一个值并返回一个函数。在第二个函数中,我尝试控制台记录log的值,value但是我得到了
Error: Evaluation failed: ReferenceError: value is not defined
Run Code Online (Sandbox Code Playgroud)
我的代码如下。可以在try-puppeteer上对其进行测试,只需复制并粘贴我的代码并删除该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();
})();
Run Code Online (Sandbox Code Playgroud)
对于在Node.js中执行并在浏览器中评估代码(量角器,TestCafe,噩梦等)的任何库,这都是一个常见的问题。函数被字符串化并作为字符串传递给浏览器。的原始范围(input) => { console.log(value) }已丢失,并且value可能是未定义的全局范围。
如文档所述,应该将其他参数传递给$eval。
它应该是:
await page.$eval('.selector', (el, value) => { console.log(value) }, USERNAME);
Run Code Online (Sandbox Code Playgroud)
console.log 可以使用,但显然不会在Node控制台中显示任何内容,因为它是指浏览器控制台。
| 归档时间: |
|
| 查看次数: |
955 次 |
| 最近记录: |