如何在 Cypress 中动态输入文本
How to dynamically type text in Cypress
我想在cypress中输入动态文本,所以在每个运行,name字段不会重复输入,例如name1,name 2...
所以在 js 文件中我会有类似
的东西
And("I enter a name", () => {
portalPage.roleName().type("Cypress admin" + 1, { force: true })
})
感谢任何帮助。
在 运行 秒之间,您必须将最后使用的数字写入夹具,
And("I enter a name", () => {
cy.fixture('name-num.json').then(num =>
const next = num +1;
portalPage.roleName().type(`Cypress admin ${next}`, { force: true })
cy.writeFile('cypress/fixtures/name-num.json', next.toString())
})
如果您在同一个 运行 中多次执行此操作,cy.fixture
将不起作用,因为它会缓存读取的值。
改为使用readFile()
And("I enter a name", () => {
cy.readFile('cypress/fixtures/name-num.json').then(num =>
const next = num +1;
portalPage.roleName().type(`Cypress admin ${next}`, { force: true })
cy.writeFile('cypress/fixtures/name-num.json', next.toString())
})
如果您只需要同一规范中的值不同,您可以将值存储在 Cypress 环境变量中。在规范完成之前,环境变量不会被清除 运行。
And("I enter a name", () => {
// set the environment variable to current value + 1, or if it hasn't been set, 1.
Cypress.env("myNumber", Cypress.env("myNumber")++ ?? 1);
// use the environment variable
portalPage.roleName().type("Cypress admin" + Cypress.env("myNumber"), { force: true });
})
您可以使用 faker js 生成唯一的名称,然后使用它。要安装,请使用 npm install @faker-js/faker --save-dev
。你的测试应该是这样的:
const faker = require('faker')
And('I enter a name', () => {
Cypress.env('Name', faker.name.firstName())
portalPage
.roleName()
.type('Cypress admin ' + Cypress.env('Name'), {force: true})
})
如果您愿意,也可以使用全名代替 Cypress admin some-name
。
const faker = require('faker')
And('I enter a name', () => {
Cypress.env('Name', faker.name.findName())
portalPage
.roleName()
.type(Cypress.env('Name'), {force: true})
})
如果您正在寻求随机输入,那么 lodash .random()
将生成一个从 0 到输入的随机数。
// will generate random number between 0 and 9999
portalPage.roleName().type(`Cypress admin${Cypress._.random(9999)}`, { force: true })
我想在cypress中输入动态文本,所以在每个运行,name字段不会重复输入,例如name1,name 2...
所以在 js 文件中我会有类似
的东西And("I enter a name", () => {
portalPage.roleName().type("Cypress admin" + 1, { force: true })
})
感谢任何帮助。
在 运行 秒之间,您必须将最后使用的数字写入夹具,
And("I enter a name", () => {
cy.fixture('name-num.json').then(num =>
const next = num +1;
portalPage.roleName().type(`Cypress admin ${next}`, { force: true })
cy.writeFile('cypress/fixtures/name-num.json', next.toString())
})
如果您在同一个 运行 中多次执行此操作,cy.fixture
将不起作用,因为它会缓存读取的值。
改为使用readFile()
And("I enter a name", () => {
cy.readFile('cypress/fixtures/name-num.json').then(num =>
const next = num +1;
portalPage.roleName().type(`Cypress admin ${next}`, { force: true })
cy.writeFile('cypress/fixtures/name-num.json', next.toString())
})
如果您只需要同一规范中的值不同,您可以将值存储在 Cypress 环境变量中。在规范完成之前,环境变量不会被清除 运行。
And("I enter a name", () => {
// set the environment variable to current value + 1, or if it hasn't been set, 1.
Cypress.env("myNumber", Cypress.env("myNumber")++ ?? 1);
// use the environment variable
portalPage.roleName().type("Cypress admin" + Cypress.env("myNumber"), { force: true });
})
您可以使用 faker js 生成唯一的名称,然后使用它。要安装,请使用 npm install @faker-js/faker --save-dev
。你的测试应该是这样的:
const faker = require('faker')
And('I enter a name', () => {
Cypress.env('Name', faker.name.firstName())
portalPage
.roleName()
.type('Cypress admin ' + Cypress.env('Name'), {force: true})
})
如果您愿意,也可以使用全名代替 Cypress admin some-name
。
const faker = require('faker')
And('I enter a name', () => {
Cypress.env('Name', faker.name.findName())
portalPage
.roleName()
.type(Cypress.env('Name'), {force: true})
})
如果您正在寻求随机输入,那么 lodash .random()
将生成一个从 0 到输入的随机数。
// will generate random number between 0 and 9999
portalPage.roleName().type(`Cypress admin${Cypress._.random(9999)}`, { force: true })