我正在将 e2e 测试从 cypress 转移到 playwright,但遇到了问题。在赛普拉斯中,您可以在上传时重命名文件,但我找不到您可以使用剧作家来执行此操作。有人知道这是可能的吗?
我正在测试的系统需要有唯一的文件,所以我需要重命名文件才能上传。
编剧:
await page.locator('input[type=file]').setInputFiles('../image.png');
柏树:
cy.fixture('../image.png', { encoding: null }).as('testImage');
cy.get('input[type=file]').selectFile(
{
contents: '@testImage',
fileName: mediaFileName,
lastModified: Date.now(),
},
{ force: true },
);
你也可以在剧作家中这样做。
setInputFiles
https://playwright.dev/docs/api/class-locator#locator-set-input-files
支持具有名称/类型/缓冲区的对象。
这是一个如何操作的示例。
test('should do upload file with different name.', async ({page}, testInfo) => {
await page.goto('https://tmpfiles.org/');
const fileBuffer = fs.readFileSync('dummy.test.txt')
const uploadInput = page.locator('input[name=\'file\']');
const newFileName= '1234abc.txt'
await uploadInput.setInputFiles({buffer: fileBuffer, name: newFileName, mimeType: 'text/plain'});
const uploadBtn = page.locator('input[name=\'upload\']')
await uploadBtn.click();
});
您提供的属性
name
将用于文件上传。