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 содержит сущность неразрывного пробела &nbsp; и тест использует селектор jQuery
\u00a0 вместо &nbsp;. <div data-testid="testattr">
<span>Hello&nbsp;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')
Вышеприведенные команды отобразятся в журнале команд следующим образом:
При нажатии на команду filter в журнале команд консоль выведет следующее:
См. также
© 2017 Cypress.io
Licensed under the MIT License.
https://docs.cypress.io/api/commands/filter