如果自身返回一个承诺,则page.$eval
andpage.$$eval
方法都返回一个值pageFunction
(我想如果他们不这样做,puppeteer 的情况非常罕见,大多数 puppeteer 方法都返回承诺)。
page.$$eval(选择器, pageFunction[, ...args])
记录的用例都返回一个值:
const divCount = await page.$$eval('div', divs => divs.length);
const options = await page.$$eval('div > span.options', options => options.map(option => option.textContent));
问题
但是我们是否可以使用page.$eval
/page.$$eval
来执行只与浏览器交互而不返回可用值(如element.click
or page.type
)的方法,特别是如果出于非常相似的原因,我们认为在不使用返回的数组时使用它是一种不好的做法?Array.map
我很好奇,因为这样我们可以简化使用Array.forEach
有问题的场景。
它确实有效,但我们应该使用它吗?
const clickAll = await page.$$eval('button', links => links.forEach(link => link.click()));
注意:将其设为 aconst
对我来说意义不大,因为我们不能clickAll
在其他任何地方使用该参考。我宁愿自己使用它而不声明它。