如何在 Puppeteer 中定位多个相同的 "input[type="file"]"?

How to target multiple identical "input[type="file"]" in Pupeteer?

我在 pupeteer 中有一个页面,我在其中尝试启动文件上传并且它必须有上传按钮。问题是启动文件上传的两个按钮具有相同的类型和选择器。这个工作代码允许我完美地将文件上传到第一个文件输入。

input = await mainpage.$('input[type="file"]');
     await input.uploadFile(`${__dirname}/images/${photoID}.png`);
     await mainpage.waitFor(500);

现在我的问题是 - 有没有办法让我以编程方式在 pupeteer 页面上定位类型文件的第二个输入?因为它们都具有相同的文件选择器 ID 等输入类型。我可以在同一代码中执行某种索引吗?我尝试了所有其他方法,因为选择器是相同的,这是我让第一个在页面上工作的唯一方法。

使用page.$$ API 获取所有匹配元素的列表。正如 docs 提到的那样,它 returns 匹配元素的数组,然后您应该能够索引该数组。有点像:

// Get all the elements for the selector
inputs = await mainpage.$$('input[type="file"]');

// Work on individual elements
await input[0].uploadFile(`${__dirname}/images/${photoID}.png`);
...