Cypress 选择不等于某个字符串的元素

Cypress 选择不等于某个字符串的元素,cypress,Cypress,我试图选择一个不正确的答案(单选按钮)以显示错误消息,但答案是随机的(正确答案除外) 我如何说获取单选按钮,然后使用cypress断言单击一个不等于“正确答案”的按钮 cy.get('[data-cy="multipleChoiceQuestionAnswer"]') .should('not.contain', 'correct answer')//.find('label').not('corect answer')//.not.includes('correct answe

我试图选择一个不正确的答案(单选按钮)以显示错误消息,但答案是随机的(正确答案除外)

我如何说获取单选按钮,然后使用cypress断言单击一个不等于“正确答案”的按钮

cy.get('[data-cy="multipleChoiceQuestionAnswer"]')
        .should('not.contain', 'correct answer')//.find('label').not('corect answer')//.not.includes('correct answer')
.click()
我希望能够为不正确的答案选择两个单选按钮中的一个,现在我只能选择正确的答案。

好的:

  • 请注意,
    .should('not.contain','correct answer')
    是一种断言,不是筛选/获取某些元素的方法。 从本质上讲,这只是一种检查(又称“断言”)某件事情是否与您期望的一样的方法。 像您这样的断言对于让Cypress日志打印这样的内容非常有用 读起来就像你在说一样
“Ehy Cypress,我选择了一个元素,请检查它是否包含正确的答案,好吗?”

  • 断言对什么有用?当一切正常,但测试出错时,它们并不有用。 因为如果没有断言,您会发现自己在一个失败的测试后面,Cypress会告诉您“没有元素”,但您无法知道Cypress没有找到哪个元素。 放置一些“关键点”断言可以让您理解为什么测试会在短时间内失败
无论如何:如果你的HTML是这样的

正确答案
不
不
你可以实现你的目标:

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();
cy.get('[data cy=“multipleechoicequestionanswer”]')。然后(els=>{
//`els`是一个jQuery实例,让我们分析各种元素
让我们把$el;
for(设i=0,n=els.length;i

我希望代码是不言自明的(如果不是,请询问我更多的澄清),如果您提出了不同的解决方案,请与我们分享