cypress - 如何使用赛普拉斯在每次注册时生成新电子邮件
问题描述
这是我的电子邮件字段 HTML
<input type="text" name="email" class="form-control" value="">
如何编写 cypress 命令,以便每次使用 + 号生成一个新的电子邮件 ID。例如,家长电子邮件地址是 test@gmail.com。随后的电子邮件地址应为 test+a1@gmail.com 、 test+a2@gmail.com
解决方案
您可以使用带有静态方法的 Javascript 类来跟踪使用的数字。
因为静态属性在类定义中,赛普拉斯不会在测试之间清除它。
您还可以将其移动到/support/index.js
并创建自定义命令以跨多个规范文件使用。
class EmailGenerator {
static id = 1;
static generate(baseEmail) {
const uniqueId = `+a${this.id++}`;
return baseEmail.replace('@', `${uniqueId}@`);
}
}
Cypress.Commands.add('generateEmail', (baseEmail) => {
return EmailGenerator.generate(baseEmail)
})
it('generates a unique email', () => {
console.log(EmailGenerator.generate('test@gmail.com')) // test+a1@gmail.com
})
it('generates a second unique email', () => {
console.log(EmailGenerator.generate('test@gmail.com')) // test+a2@gmail.com
})
it('generates a third unique email via a custom command (across all specs)', () => {
cy.generateEmail('test@gmail.com')
.then(email => console.log(email)); // test+a3@gmail.com
})
it('puts unique emails into the input', () => {
cy.get('input[name="email"]')
.type(EmailGenerator.generate('test@gmail.com')) // test+a4@gmail.com
cy.get('input[name="email"]')
.type(EmailGenerator.generate('test@gmail.com')) // test+a5@gmail.com
})
推荐阅读
- amazon-web-services - 在两个环境之间同步数据
- java - Gradle 和 Docker:如何在 Docker 容器中运行 Gradle 构建?
- r - R 的数据表:“警告:不支持`dim<-.vctrs_list_of()`”
- python - 函数 str() 不起作用,我不知道该怎么办
- salesforce - 从 SObject 列表 (Apex) 中获取字段值
- scala - ZIO Test 中的“测试正在使用时间,但没有提前测试时钟”
- azure - Azure Functions:突然的 CORS 问题(经过数小时的 copacci 开发)
- xss - 如何使用 HttpOnly cookie
- python - 如何让 Django 知道何时使用覆盖的 save() 插入或更新
- python - 如何将变量作为参数/参数传递给子进程模块