赛普拉斯:如何验证生成的复选框是否已选中并具有属性 aria-checked="true"

我想验证是否选中了一个复选框。但它通常不是 type="checkbox" 中的复选框,因此它没有“已选中”的属性。而不是这个,你可以在 HTML-Doom aria-checked="true" 中找到。我怎样才能读出这个值?

HTML 片段:


<mat-checkbox class="mat-checkbox mat-primary mat-checkbox-checked" aria-label="checkBoxCapacityBaseEditDayofWeek: 1" id="DAY1">
  <label class="mat-checkbox-layout" for="DAY1-input">
  <span class="mat-checkbox-inner-container">
   <input type="checkbox" class="mat-checkbox-input cdk-visually-hidden" id="DAY1-input" tabindex="0" value="1" aria-checked="true">

我尝试了这么久:

赛普拉斯代码(无效):

// cy.get('#DAY2')
    // .should('have.value', 'aria-checked="true"')

    cy.get('#DAY1')
    .should('have.attr', 'aria-checked', 'false')

    cy.get('#DAY2')
    .should('have.attr', 'aria-checked', 'true')

    // .invoke('val', 'aria-checked')
    // .should('eq', true)
    // .should('have.prop', 'aria-checked', true)
    // .should('have.attr', 'aria-checked', 'true')

我怎样才能得到真正的价值?

编辑:我找到了解决方案:赛普拉斯代码:

cy.get('#DAY1-input').should('have.attr', 'aria-checked', 'true')
stack overflow Cypress: How to verify generated checkBox is checked and has attribute aria-checked="true"
原文答案

答案:

作者头像

您正在尝试的问题是您仅使用 cy.get() 选择父元素。如果您使用 .find() 您可以链接父元素以查找子元素。像下面这样的东西应该可以工作:

cy.get('#DAY1')
  .find('#DAY1-input')
  .should('have.attr', 'aria-checked', true);

此外,您可以直接选择 DAY1-input 元素,因为它具有唯一标识符:

cy.get('#DAY1-input')
  .should('have.attr', 'aria-checked', true);
作者头像

.should('have.prop', 'checked', true);我想它会对你有所帮助。