在我的HTML中,我有一个input元素,如下所示:
<input id="input-44" name="input44[]" type="file" multiple>
在我的JavaScript代码中(跳过一些样板),可以完成以下工作:
const elementHandle = await page.$("#input-44");
elementHandle.uploadFile("/path/to/file");
await page.click("#upload-button");
根据文档:
https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md
uploadFiles应该能够接受多个文件
当我将代码更改为:
const elementHandle = await page.$("#input-44");
const files = ["/path/to/file", "/path/to/file2"];
elementHandle.uploadFile(...files);
await page.click("#upload-button");
上传不再起作用。为什么会这样?
答案 0 :(得分:1)
作为替代方案,我认为您可以循环上传路径中的每个元素
const elementHandle = await page.$("#input-44");
const files = ["/path/to/file", "/path/to/file2"];
for (let index = 0; index < files.length; index++) {
const filePath = files[index];
await elementHandle.uploadFile(filePath);
}
await page.click("#upload-button");
答案 1 :(得分:0)
不确定这是问题所在,但在 await
之前没有 elementHandle.uploadFile(...files);
const elementHandle = await page.$("#input-44");
const files = ["/path/to/file", "/path/to/file2"];
await elementHandle.uploadFile(...files);
await page.click("#upload-button");
不过,如果代码没有 await
,我不确定为什么代码能正常工作。