如何在数组中传递文件名,然后迭代赛普拉斯中的文件上载功能

Pranjal Prakash Srivastava

我正在尝试创建一个for循环,在该循环中,我将使用beforeEach传递列表中的所有文件,然后要迭代该列表,以便通过api调用上传文件。

我已将所有文件放在cypress / fixture / files文件夹下。

我想将fixture / files文件夹下的文件添加到数组中,如下所示:

beforeEach(() => {
  cy.fixture('files/').as('files')
});

然后,我想迭代文件数组以通过api调用上传文件。

我使用下面的代码进行迭代:

cy.wrap(files).each((index) => {
  const fileName = files[index];

当我尝试使用以上代码时,出现以下错误。我不确定我是否使用了正确的方法。

在此处输入图片说明

理查德·马特森(Richard Matsen)

我不确定这是否可以解决问题,但是使用别名的方式不正确。您需要cy.wait('@files')获取别名的值。cy.get('@files')也是正确的语法,但是在这里不起作用,因为它cy.fixture()是从磁盘读取的(因此必须等待它完成)。

由于您是在加载文件后立即使用文件,因此请删除别名并使用a.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"
    ...

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章