在 《Puppeteer 处理文件下载》 一文后,我们看看如何处理文件上传问题。好在 Puppeteer 直接提供了上传的方法,我们只要定位到对应的上传元素后,就可以启动上传过程,非常的方便。
浏览器中,处理上传功能的原生控件,是下面这种类型:
HTML 代码是:
<input type=file >
所以只要找到这个元素,就能利用 puppeteer 的元素 upload 方法,实现自动上传文件。
寻找上传控件元素
可以用下面的方法寻找控件
let input = await page.waitForXPath('//input[@type="file"]')
实施上传
可以用下面的方法实施上传
await input.uploadFile('/path/to/file')
相对路径
uploadFile
函数的参数如果是相对路径(比如只有文件名),将是相对当前工作目录,也就是 node 的启动目录。如果不确定是哪个目录,可以通过下面的语句确认:
console.log(`Current directory: ${process.cwd()}`);
(完)