从Cypress迁移至Playwright:上传文件重命名功能实现问询
Playwright实现文件上传时重命名
完全可行。Playwright支持通过构造File对象的方式,在上传时自定义文件名、修改时间等属性,满足被测系统对文件唯一性的要求,实现逻辑和Cypress类似。
具体实现步骤:
- 读取本地目标文件的二进制内容
- 使用浏览器原生的
File构造函数,创建带有自定义文件名的文件对象 - 将该File对象传入
setInputFiles完成上传
示例代码:
const fs = require('fs').promises; const path = require('path'); // 读取本地文件内容 const fileBuffer = await fs.readFile(path.resolve(__dirname, '../image.png')); // 构造自定义文件名的File对象,拼接时间戳保证唯一性 const customFile = new File([fileBuffer], `unique-image-${Date.now()}.png`, { type: 'image/png', lastModified: Date.now() }); // 执行上传操作 await page.locator('input[type=file]').setInputFiles(customFile);
关键说明
File构造函数的第二个参数就是自定义的文件名,这里通过时间戳生成唯一名称,和你在Cypress中用mediaFileName的逻辑匹配- 第三个参数可指定文件MIME类型和
lastModified属性,进一步强化文件唯一性 - 若需批量上传多个重命名文件,直接传入File对象数组即可,比如
setInputFiles([customFile1, customFile2])
内容的提问来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

