在 Angular 中验证表单字段和处理错误(版本 13.3.0)

Validating Form Fields and Handling Errors in Angular (Version 13.3.0)

提问人:Hina Iqbal 提问时间:10/17/2023 最后编辑:V.KriepsHina Iqbal 更新时间:10/18/2023 访问量:35

问:

我正在使用 Angular 版本 13.3.0。我正在尝试验证具有各种验证规则的表单,例如“名字为必填项”,以及其他字段,例如“姓氏”、“性别”、“用户类型”、“用户名”和“密码”。

如何使用 Cypress 'should' 来验证这些表单字段并处理可能出现的任何验证错误?

describe('Form Validation', () => {
  it('Should validate form fields and handle errors', () => {
    cy.visit('http://qa.aquators.com');


    // Fill out the form
    cy.get('[data-cy="firstname"]').type('');
    cy.get('[data-cy="lastname"]').type('');
    // cy.get('input[data-cy="male"]').click({ force: true });
    // cy.get('input[data-cy="finance_manager"]').click({ force: true });
    cy.get('[data-cy="username"]').type('');
    cy.get('[data-cy="password"]').type('');

    // Submit the form
    cy.get('[btn-id="submit"]').click(); 
    // Check validation errors
    cy.get('[data-cy="firstname-error"]').should('contain', 'First Name is required');
    cy.get('[data-cy="lastname-error"]').should('contain', 'Last Name is required');
    cy.get('[data-cy="gender-error"]').should('contain', 'Gender is required');
    cy.get('[data-cy="usertype-error"]').should('contain', 'User Type is required');
    cy.get('[data-cy="username-error"]').should('contain', 'Username is required');
    cy.get('[data-cy="password-error"]').should('contain', 'Password is required');

    // Handle validation errors as needed
  });
});
角度 验证 测试 柏树

评论

0赞 agoff 10/18/2023
尝试运行此代码时收到哪些错误?您页面的 HTML 是什么样的?

答:

3赞 Tiana 10/18/2023 #1

您可以通过链接 “connector” 查询来检查该属性。validationMessage.its('validationMessage')

通常,当标签之间有一些文本时,直接在元素查询之后使用,例如 ..should('contain', ...something)<div>Some text is here</div>

但元素存储您使用该属性键入的值,以及该属性中的错误消息。<input>valuevalidationMessage

该命令用于将主题从元素更改为值。it('some-property')some-property

cy.get('[data-cy="firstname-error"]')
  .its('validationMessage')
  .should('contain', 'First Name is required')

cy.get('[data-cy="lastname-error"]')
  .its('validationMessage')
  .should('contain', 'Last Name is required')

cy.get('[data-cy="gender-error"]')
  .its('validationMessage') 
  .should('contain', 'Gender is required')

cy.get('[data-cy="usertype-error"]')
  .its('validationMessage')
  .should('contain', 'User Type is required')

cy.get('[data-cy="username-error"]')
  .its('validationMessage')
  .should('contain', 'Username is required')

cy.get('[data-cy="password-error"]')
  .its('validationMessage')
  .should('contain', 'Password is required')

作为旁注,您也可以将该属性合并到以下内容中:.should()

cy.get('[data-cy="password-error"]')
  .should('have.property', 'validationMessage', 'Password is required')

这是一项精确的检查,与部分检查相反。contains