如何将数组或集合字符串存储到变量中。然后获取该信息并将其保存到新的夹具中。目的是在不同的场景或测试中重复使用该夹具。
示例:我有一个下拉菜单,如果单击它,它会显示以下选项;苹果、香蕉、梨。
我想将所有三种水果保存到测试之外的某个位置的列表中。
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
来解决这个问题,或者使用其他策略。