首页 > 解决方案 > 如何使用赛普拉斯在每次注册时生成新电子邮件

问题描述

这是我的电子邮件字段 HTML

<input type="text" name="email" class="form-control" value="">

如何编写 cypress 命令,以便每次使用 + 号生成一个新的电子邮件 ID。例如,家长电子邮件地址是 test@gmail.com。随后的电子邮件地址应为 test+a1@gmail.com 、 test+a2@gmail.com

标签: cypress

解决方案


您可以使用带有静态方法的 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

})

推荐阅读