reactjs Cypress -选择包含文本的按钮

kulphzqa  于 2023-04-11  发布在  React
关注(0)|答案(3)|浏览(134)

我使用material-ui作为我的css框架,我想选择包含特定文本的按钮。我的当前代码:

cy.get('button').contains('Edit Claim').should('be.disabled');

失败的原因是material ui的button组件输出了一个div中的文本,所以cypressAssert了div的禁用属性。我希望它Assert到button。
编辑:x1c 0d1x

6vl6ewon

6vl6ewon1#

我用cy.contains('button', 'Edit Claim').should('be.disabled');解决了这个问题

h7wcgrx3

h7wcgrx32#

Material-UI demo page上,标签位于子<span>(而不是<div>)中,

<button class="MuiButtonBase-root MuiButton-root MuiButton-contained Mui-disabled Mui-disabled" tabindex="-1" type="button" disabled="">
  <span class="MuiButton-label">Disabled</span>
</button>

但是可能会有变化-在任何情况下,您都可以通过将.parent()添加到测试中来引用按钮

cy.visit('https://material-ui.com/components/buttons/');
cy.get('button')
  .contains('Disabled')      // span is the subject
  .parent()                  // move up to the button
  .should('be.disabled');
k5hmc34c

k5hmc34c3#

可能有两个按钮有相同的文本,那么更好的方法是为那个MUI按钮设置data-cy属性:

<Button data-cy="ok-btn">OK</Button>

那就去塞普里斯

cy.get('[data-cy="ok-btn"]').click();

相关问题