Spec-Zone.ru › Cypress

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')

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

Command Log get

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

Console Log get

История

Версия Изменения
5.2.0 Добавлена опция includeShadowDom .

См. также

  • .as()
  • cy.contains()
  • .find()
  • .within()
  • Перепроверка

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

Spec-Zone.ru

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