Javascript 如何在数组中传递文件名,然后在cypress中迭代文件上载功能
我正在尝试创建一个for循环,在这个循环中,我将使用beforeach传递列表中的所有文件,然后我希望迭代列表,以便通过api调用上载文件 我已将所有文件放在cypress/fixture/files文件夹下 我想将fixture/files文件夹下的文件添加到数组中,如下所示:Javascript 如何在数组中传递文件名,然后在cypress中迭代文件上载功能,javascript,cypress,Javascript,Cypress,我正在尝试创建一个for循环,在这个循环中,我将使用beforeach传递列表中的所有文件,然后我希望迭代列表,以便通过api调用上载文件 我已将所有文件放在cypress/fixture/files文件夹下 我想将fixture/files文件夹下的文件添加到数组中,如下所示: beforeEach(() => { cy.fixture('files/').as('files') }); 然后我想迭代文件数组,通过api调用上传文件 我使用以下代码进行迭代: cy.wrap(fil
beforeEach(() => {
cy.fixture('files/').as('files')
});
然后我想迭代文件数组,通过api调用上传文件
我使用以下代码进行迭代:
cy.wrap(files).each((index) => {
const fileName = files[index];
当我尝试使用上面的代码时,我得到下面的错误。我不确定我是否使用了正确的方法
我不确定这是否解决了问题,但您使用别名的方式不正确。您需要
cy.wait('@files')
来获取别名的值cy.get('@files')
也是正确的语法,但在这里不起作用,因为cy.fixture()
从磁盘读取数据(因此必须等待它完成)
由于您在加载文件后直接使用这些文件,因此请去掉别名并使用.then()
等待
/*
Fixture file contains:
{
"uploadFilePng": "files/cypressFileUpload.png",
"uploadFileDmg": "files/cypressFileUpload.dmg",
...
}
*/
cy.fixture('files/cypressFileUpload').then(files => {
const fileNames = Object.values(files);
cy.wrap(fileNames).each(fileName => {
console.log(fileName); // should see "files/cypressFileUpload.png", "files/cypressFileUpload.dmg"
...
我尝试了上述方法,但仍然出现错误“cy。each()只能对类似于subject的数组进行操作。您的subject是:@files,因为此错误发生在每次挂接之前,我们将跳过当前套件中的其余测试:Upload File”这将取决于您在
文件/cypressFileUpload
中的内容。假设它是一个json数组?是的,它是一个json数组,内容为:{“uploadFilePng”:“files/cypressFileUpload.png”,“uploadFileDmg”:“files/cypressFileUpload.dmg”,“uploadFilePkg”:“files/cypressFileUpload.pkg”,“uploadFileHtm”:“files/cypressFileUpload.html”,“uploadFileDocx”:“files/cypressFileUpload.docx”,“uploadFileJar”:”:“files/cypressFileUpload.jar”、“uploadFilePdf”:“files/cypressFileUpload.pdf”、“uploadFileJpg”:“files/cypressFileUpload.jpg”、“uploadFileXlsx”:“files/cypressFileUpload.xlsx”、“uploadFileZip”:“files/cypressFileUpload.zip”}好的,实际上这是一个json对象——处理略有不同。