在cypress测试中选中mat-checkbox

时间:2019-12-18 14:23:09

标签: angular angular-material cypress

我试图用cypress mat-checkbox方法检查check()元素,即使添加force参数也是如此。示例:

Cypress.Commands.add('changeEmailLayoutCheckbox', () =>
  cy
    .get(EMAIL_LAYOUT_CHECKBOX)
    .check({ force: true })
);

我遇到以下错误

  

cy.check()只能在:checkbox和:radio上调用。你的主题是   a:

该消息非常清楚,但是问题是我在mat-checkbox更改时发出了一些事件,该事件将参数设置为我的请求。我也尝试过使用click(),但没有触发提到的事件。

2 个答案:

答案 0 :(得分:2)

该复选框是mat-checkbox的子元素。您将需要选择内部子项,然后单击它。我不得不强迫它工作。我将看看是否有更好的方法可以做到这一点。

describe('how to check mat-checkbox', () => {

    it('check the input', () => {

        cy.visit('https://material.angular.io/components/checkbox/overview');

        cy.get('#mat-checkbox-1-input').click({force:true});
        //**** OR ***********   
        cy.get('#mat-checkbox-1').find('input').click({force:true});

    });

});

答案 1 :(得分:0)

根据我的实验,只要选择了正确的元素,语法就可以保持非常简单,而不会强制使用。

总结示例:

<div id="parent">
  <mat-checkbox ...></mat-checkbox>
  <!-- assuming there is no other input or mat-checkbox here -->
</div>
cy.get('#parent mat-checkbox').click()       # interact
cy.get('#parent input').should('be.checked') # check state