Puppeteer.Iteration elementHandle数组问题

时间:2018-01-01 17:22:25

标签: javascript async-await puppeteer

请帮助我达到预期的效果。 我将使用文本填充页面上的每个输入字段:'123'。

let inputList = await page.$$('.form input');
inputList.map(async item => {
   await item.type('123');
});

预期结果 - 每个领域123个。

实际结果 - 最后一个输入栏位上的112233。

page.$$(selector) API

1 个答案:

答案 0 :(得分:1)

从一般意义上讲,您正在尝试迭代数组并对数组中的每个项执行异步操作。您可以通过多种方式实现,for ... of循环是单向的。如果您不想循环但是想要迭代,您可以这样做:

await inputList.reduce(async (previousVal, currentVal) => {
    await previousVal; // wait for the promise returned by the previous asynchronous call
    return currentVal.type('123'); // call the next elementHandle in the array
}, Promise.resolve()); // the initial value that is passed to the callback function