Spec-Zone.ru › Cypress

filter

Получите элементы DOM, которые соответствуют заданному селектору.

Противоположность .not()

Поведение запроса этой команды точно соответствует тому, как работает .filter() в jQuery.

Синтаксис

.filter(selector)
.filter(selector, options)

Использование

Правильное использование

cy.get('td').filter('.users') // Yield all el's with class '.users'

Неправильное использование

cy.filter('.animated') // Errors, cannot be chained off 'cy'
cy.location().filter() // Errors, 'location' does not yield DOM element

Аргументы

selector (Строковый селектор)

Селектор, используемый для фильтрации соответствующих элементов DOM.

options (Объект)

Передайте объект опций, чтобы изменить стандартное поведение .filter().

Опция Значение по умолчанию Описание
log true Отображает команду в Журнале команд
timeout defaultCommandTimeout Время ожидания .filter() для разрешения перед выходом за пределы времени ожидания

Возвращаемое значение

  • .filter() возвращает новые найденные элементы DOM.

Примеры

Селектор

Фильтрация текущего объекта до элементов с классом 'active'

<ul>
  <li>Home</li>
  <li class="active">About</li>
  <li>Services</li>
  <li>Pricing</li>
  <li>Contact</li>
</ul>
// yields <li>About</li>
cy.get('ul').find('>li').filter('.active')

Содержит

Фильтрация по тексту

Вы можете использовать селектор jQuery

селектор для выполнения чувствительного к регистру соответствия подстрокам текста.
<ul>
  <li>Home</li>
  <li>Services</li>
  <li>Advanced Services</li>
  <li>Pricing</li>
  <li>Contact</li>
</ul>

Давайте найдём оба элемента списка, содержащие слово "Services"

cy.get('li').filter(':contains("Services")').should('have.length', 2)

Неразрывный пробел

Если HTML содержит сущность неразрывного пробела &ampnbsp; и тест использует селектор jQuery

селектор, то тест должен использовать значение Unicode \u00a0 вместо &ampnbsp;.
<div data-testid="testattr">
  <span>Hello&ampnbsp;world</span>
</div>
cy.get('[data-testid=testattr]').filter(':contains("Hello\u00a0world")')

Правила

Требования

  • .filter() требует привязки к команде, возвращающей элемент(ы) DOM.

Ассершены

  • .filter() будет автоматически повторяться до тех пор, пока элемент(ы) не появятся в DOM
  • .filter() будет автоматически повторяться до тех пор, пока все привязанные ассершены не пройдут

Таймауты

  • .filter() может выйти за пределы времени ожидания, ожидая, пока элемент(ы) не появятся в DOM .
  • .filter() может выйти за пределы времени ожидания, ожидая, пока пройдут все добавленные ассершены.

Журнал команд

Фильтр li's до li с классом 'active'.

cy.get('.left-nav>.nav').find('>li').filter('.active')

Вышеприведенные команды отобразятся в журнале команд следующим образом:

Command Log filter

При нажатии на команду filter в журнале команд консоль выведет следующее:

console.log filter

См. также

  • .not()

© 2017 Cypress.io
Licensed under the MIT License.
https://docs.cypress.io/api/commands/filter

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API