хорошо:
- имейте в виду, что
.should('not.contain', 'correct answer')
- это утверждение, а не способ фильтрации / получения некоторых элементов.По сути, это просто способ проверить (иначе говоря, «утверждать»), что что-то такое, как вы ожидаете.Такое утверждение, как ваше, полезно только для того, чтобы распечатать журнал Cypress как-то так Прочитайте его, как если бы вы говорили
"Ehy Cypress, я выбралэлемент, можете ли вы проверить, что он не содержит правильного ответа , пожалуйста? "
- Для чего нужны утверждения?Они бесполезны, когда все идет хорошо, но когда тест идет не так.Потому что без утверждений вы можете оказаться за несостоявшимся тестом, когда Cypress скажет вам, что «там нет элемента», но вы не можете знать, какой элемент Cypress не находит.Поместив некоторые утверждения «ключевой точки», вы поймете, почему тест не удался за короткое время.
В любом случае: если ваш HTML-код подобен этому
<div data-cy="multipleChoiceQuestionAnswer"><label>correct answer<input type="checkbox"/></label></div>
<div data-cy="multipleChoiceQuestionAnswer"><label>no<input type="checkbox"/></label></div>
<div data-cy="multipleChoiceQuestionAnswer"><label>nope<input type="checkbox"/></label></div>
, вы можете выполнитьпостановка целей:
cy.get('[data-cy="multipleChoiceQuestionAnswer"]').then(els => {
// `els` is a jQuery instance, let's parse the various elements
let $el;
for(let i = 0, n = els.length; i < n; i++) {
// it transforms every element in a jQuery instance
$el = Cypress.$(els[i]);
// it uses jQuery to get the label text
if($el.find("label").text() !== "correct answer") {
// it stops as soon as the answer isn't the correct one
break;
}
}
// returns the element to be clicked
return $el.find("input");
})
// it assert about it (to have a useful hint in the Cypress command log)
.should("not.contain", "correct answer")
// clicks it
.click();
Я надеюсь, что код не требует пояснений (если это не так, спросите меня еще несколько уточнений) ?