如何在Cypress中通过循环实现文件下载并自定义文件名?
解决循环下载时自定义文件名的问题
先看你当前的代码:
describe('download',function() { it('fils',function() { cy.visit('url') cy.get('.ds_class_data_sheet').click() cy.wait(3000) const numberoftest=68; for (let i = 1; i <= numberoftest; i ++) { cy.get('.dsDocumentData > .dsTitle > .dsDocumentLink').eq(i).then(function(e1) { const url=e1.prop('href') cy.downloadFile(url,'cypress/downloads/Datasheet','file1.pdf') } ) } } ) })
要给每个下载的文件设置对应文件名,有两种常用方式:
1. 用循环索引生成顺序文件名
直接利用循环里的i变量,给每个文件按编号命名,比如file-1.pdf、file-2.pdf... 修改代码里的文件名参数即可:
cy.downloadFile(url,'cypress/downloads/Datasheet',`file-${i}.pdf`)
2. 从链接文本提取有意义的文件名
如果想让文件名和文档标题对应,可以从链接的文本内容获取,注意要处理掉文件名里不允许的特殊字符(比如/、\、:等):
cy.get('.dsDocumentData > .dsTitle > .dsDocumentLink').eq(i).then(function(e1) { const url = e1.prop('href') // 获取链接文本并清理特殊字符 const fileName = e1.text().trim().replace(/[\\/:*?"<>|]/g, '_') + '.pdf' cy.downloadFile(url, 'cypress/downloads/Datasheet', fileName) })
这样每个文件就会用对应的文档标题作为文件名,避免重名的同时也更直观。
内容的提问来源于stack exchange,提问作者Gopika GG
相关产品推荐
相关产品推荐

