#html #checkbox #attributes #cypress #checked
#HTML #флажок #атрибуты #кипарис #проверен
Вопрос:
Я хочу убедиться, что флажок установлен. Но обычно это не флажок из типа=»флажок», поэтому у него НЕТ свойства «проверено». Вместо этого вы можете найти в HTML-Doom арию-проверено=»истина». Как я могу прочитать это значение?
HTML-Снипет:
lt;mat-checkbox class="mat-checkbox mat-primary mat-checkbox-checked" aria-label="checkBoxCapacityBaseEditDayofWeek: 1" id="DAY1"gt; lt;label class="mat-checkbox-layout" for="DAY1-input"gt; lt;span class="mat-checkbox-inner-container"gt; lt;input type="checkbox" class="mat-checkbox-input cdk-visually-hidden" id="DAY1-input" tabindex="0" value="1" aria-checked="true"gt;
То, что я так долго пытался:
Кипарисовый код (ничего не работает):
// 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')
Как я могу получить значение true?
РЕДАКТИРОВАТЬ: Я нашел решение: Cypress-Код:
cy.get('#DAY1-input').should('have.attr', 'aria-checked', 'true')
Ответ №1:
Проблема с тем, что вы пытаетесь, заключается в том, что вы выбираете только родительский элемент со своим 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);
Комментарии:
1. Спасибо. Я уже нашел его сам… Должно быть, я все время следил за этим явным идентификатором… как мне не стыдно^^
2. Ха-ха, упс! Я не видел вашей правки, когда писал. Рад, что вы смогли в этом разобраться 😀