Cypress 将文件写入新的夹具或文件夹

问题描述 投票:0回答:1

如何将数组或集合字符串存储到变量中。然后获取该信息并将其保存到新的夹具中。目的是在不同的场景或测试中重复使用该夹具。

示例:我有一个下拉菜单,如果单击它,它会显示以下选项;苹果、香蕉、梨。

我想将所有三种水果保存到测试之外的某个位置的列表中。

cypress fixtures
1个回答
0
投票

cy.writeFile
可用于将数据写入文件。然后,您可以使用
cy.readFile
cy.fixture
从文件中读取该数据。

// Getting the strings 
let texts = []
cy.get('dropdown') // this probably will need to be changed to fit your scenario
  .find('option')
  .each(($option) => {
    texts.push($option.text());
  });
cy.writeFile('path/to/new/file.json', texts);

// Later...
cy.readFile('path/to/new/file.json').then((data) => { ... });
// or
cy.fixture('file.json').then((data) => { ... }); // if file is stored in the fixtures directory

或者,如果您在同一个规范文件中运行所有测试,则可以使用 Cypress 环境变量。

describe('test', () => {
  before(() => {
    cy.visit('/foo'); // visit page
    cy.get('dropdown')
      .find('option')
      .each(($option) => {
        Cypress.env('dropdownOptions', (Cypress.env('dropdownOptions') ?? []).push($option.text());
      });
  });

  it('tests something', () => {
    cy.wrap(Cypress.env('dropdownOptions')).should('have.length, 3);
  });
});

需要注意的一些事情:Cypress.env 的 getter/setter 范例可能会有点笨拙。可能有更干净的方法来迭代选项并存储数据,但这只是一个示例。此外,Cypress.env 是同步的,因此如果您想在 Cypress 命令链中使用它,您需要使用

cy.wrap
来解决这个问题,或者使用其他策略。

© www.soinside.com 2019 - 2024. All rights reserved.