get
Получить один или несколько элементов DOM по селектору или псевдониму.
Поведение этого командного запроса аналогично работе
$(...)в jQuery.
Синтаксис
cy.get(selector)
cy.get(alias)
cy.get(selector, options)
cy.get(alias, options)
Использование
Правильное использование
cy.get('.list > li') // Yield the <li>'s in .list
Аргументы
selector (Строковый селектор)
Селектор, используемый для фильтрации соответствующих элементов DOM.
alias (Строка)
Псевдоним, определенный с помощью команды .as() и используемый с символом @ и именем псевдонима.
Вы можете использовать cy.get() для псевдонимов примитивов, обычных объектов или даже элементов DOM.
При использовании псевдонимов с элементами DOM, Cypress повторно запросит DOM, если ранее ассоциированный элемент DOM устарел.
Основной концепции
options (Объект)
Передайте объект options, чтобы изменить стандартное поведение cy.get().
| Опция | Значение по умолчанию | Описание |
|---|---|---|
log |
true |
Отображает команду в журнале команд |
timeout |
defaultCommandTimeout |
Время ожидания, в течение которого cy.get() должен разрешиться, прежде чем произойдёт таймаут
|
withinSubject |
null | Элемент, в котором необходимо искать дочерние элементы. Если null, поиск начинается с корневого элемента DOM |
includeShadowDom |
includeShadowDom значение конфигурации |
Необходимо ли проходить границы тени DOM и включать элементы внутри тени DOM в результирующие элементы. |
Возвращаемые значения
-
cy.get()возвращает найденный(ые) элемент(ы) DOM.
Примеры
Селектор
Получить элемент ввода
cy.get('input').should('be.disabled')
Найти первый li дочерний элемент внутри ul
cy.get('ul li:first').should('have.class', 'active')
Найти выпадающее меню и щелкнуть по нему
cy.get('.dropdown-menu').click()
Найти 5 элементов с заданным атрибутом данных
cy.get('[data-test-id="test-example"]').should('have.length', 5)
Найти ссылку с атрибутом href, содержащим слово «questions», и щелкнуть по ней
cy.get('a[href*="questions"]').click()
Найти элемент с id, начинающийся с «local-»
cy.get('[id^=local-]')
Найти элемент с id, заканчивающийся на «-remote»
cy.get('[id$=-remote]')
Найти элемент с id, начинающийся с «local-» и заканчивающийся на «-remote»
cy.get('[id^=local-][id$=-remote]')
Найти элемент с id, содержащий символы, используемые в CSS, такие как «.» и «:».
cy.get('#id\\.\\.\\.1234') // escape the character with \\
Получить внутри .within()
cy.get() в команде .within()
Поскольку cy.get() привязано к cy, оно всегда ищет селектор внутри всего document. Единственное исключение — использование внутри команды .within().
cy.get('form').within(() => {
cy.get('input').type('Pamela') // Only yield inputs within form
cy.get('textarea').type('is a developer') // Only yield textareas within form
})
get против find
Команда cy.get всегда начинает поиск с элемента cy.root. В большинстве случаев, это document элемент, за исключением случаев использования внутри команды .within(). Команда .find начинает поиск с текущего объекта.
<div class="test-title">cy.get vs .find</div>
<section id="comparison">
<div class="feature">Both are querying commands</div>
</section>
cy.get('#comparison')
.get('div')
// finds the div.test-title outside the #comparison
// and the div.feature inside
.should('have.class', 'test-title')
.and('have.class', 'feature')
cy.get('#comparison')
.find('div')
// the search is limited to the tree at #comparison element
// so it finds div.feature only
.should('have.length', 1)
.and('have.class', 'feature')
Псевдоним
Для подробного объяснения псевдонимов, подробнее ознакомьтесь с псевдонимами здесь.
Получить элементы с псевдонимом 'todos'
cy.get('ul#todos').as('todos')
//...hack hack hack...
//later retrieve the todos
cy.get('@todos')
Получить элемент с псевдонимом 'submitBtn'
beforeEach(() => {
cy.get('button[type=submit]').as('submitBtn')
})
it('disables on click', () => {
cy.get('@submitBtn').should('be.disabled')
})
Получить фикстуру с псевдонимом 'users'
beforeEach(() => {
cy.fixture('users.json').as('users')
})
it('disables on click', () => {
// access the array of users
cy.get('@users').then((users) => {
// get the first user
const user = users[0]
cy.get('header').contains(user.name)
})
})
Правила
Требования
-
cy.get()требует цепочки команд, возвращающих элементы DOM.
Утверждения
-
cy.get()автоматически повторит попытку, пока элемент(ы) не будут существовать в DOM -
cy.get()автоматически повторит попытку, пока все связанные утверждения не пройдут
Таймауты
-
cy.get()может установить таймаут ожидания элемента(ов), пока они не появятся в DOM . -
cy.get()может установить таймаут ожидания, пока не пройдут все добавленные утверждения.
Журнал команд
Получить элемент ввода и проверить значение
cy.get('input[name="firstName"]').should('have.value', 'Homer')
Вышеперечисленные команды будут отображены в журнале команд как:
При нажатии на команду get в журнале команд, консоль выводит следующее:
История
| Версия | Изменения |
|---|---|
| 5.2.0 | Добавлена опция includeShadowDom . |
См. также
© 2017 Cypress.io
Licensed under the MIT License.
https://docs.cypress.io/api/commands/get