获取第一个不包含柏树数组中值的元素

Get first element that does not contain value in an array in cypress

我有一个卡片列表,我需要以编程方式 select 列表中第一个不包含数组中五个值之一的卡片。我试过这个:

cy.get('.parent-element').not().contains('string1', 'string2', 'etc')

还有这个:

cy.get('.parent-element').not('string1', 'string2', 'etc')

嗯。对此有任何想法。除了这些少数例外,.parent-element 的任何子元素都是公平游戏。

const selector = ".parent-element li";
const array = ["string1", "string2", "string3"];
cy.get(selector)
  .then($els => {
    return $els.filter((i, el) => {
      // Cypress.$ is jQuery
      const textContent = Cypress.$(el).text();
      const result = array.filter(str => textContent.includes(str));
      // if noone string is been found... we have found the desired element
      return !result.length;
    });
  })
  .then($el => {
    // $el is your searched element

    // some assertions about it
    expect($el.text()).not.includes("string1");
    expect($el.text()).not.includes("string2");
    expect($el.text()).not.includes("string3");
  });
  • 指定用于查找子项的选择器(我在选择器后附加了li
  • 您使用的 .not().contains 是断言,而不是过滤器
  • cy.get函数returns一些jquery元素
  • 使用Cypress.$(即jQuery)手动过滤掉各种子项

让我知道是否够清楚

我没有使用这样的命令:

cy.get('.alert-radio-group > button')
.not(`:contains(\'${valueSelected1}\')`)
.not(`:contains(\'${valueSelected2}\')`)
.first()
.click();