Получить первый элемент, который не содержит значения в массиве в кипарис - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть список карточек, и мне нужно программно выбрать первую в списке, которая не содержит одно из пяти значений, которые у меня есть в массиве.Я пробовал это:

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

и это:

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

ммм.любые мысли по этому поводу.любой дочерний элемент .parent-element является честной игрой, за исключением нескольких исключений.

1 Ответ

0 голосов
/ 05 февраля 2019
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 возвращает некоторые элементы jquery
  • использование Cypress.$ (то есть jQuery) для ручной фильтрации различных дочерних элементов

Дайте мне знать, если это достаточно ясно clear

...