Introducing Flaky Test Detection & Alerts in Cypress Dashboard - Find and fix flaky tests faster than ever 🎉

Learn More


Improve this doc

Get one or more DOM elements by selector or alias.

The querying behavior of this command is similar to how $(…) works in jQuery.


cy.get(selector, options)
cy.get(alias, options)


Correct Usage

cy.get('.list > li') // Yield the <li>'s in .list


selector (String selector)

A selector used to filter matching DOM elements.

alias (String)

An alias as defined using the .as() command and referenced with the @ character and the name of the alias.

You can use cy.get() for aliases of primitives, regular objects, or even DOM elements.

When using aliases with DOM elements, Cypress will query the DOM again if the previously aliased DOM element has gone stale.

Core Concept

You can read more about aliasing objects and elements in our Core Concept Guide.

options (Object)

Pass in an options object to change the default behavior of cy.get().

Option Default Description
log true Displays the command in the Command log
timeout defaultCommandTimeout Time to wait for cy.get() to resolve before timing out
withinSubject null Element to search for children in. If null, search begins from root-level DOM element
includeShadowDom includeShadowDom
config option value
Whether to traverse shadow DOM boundaries and include elements within the shadow DOM in the yielded results.


  • cy.get() yields the DOM element(s) it found.



Get the input element


Find the first li descendent within a ul

cy.get('ul li:first').should('have.class', 'active')

Find the dropdown-menu and click it


Find 5 elements with the given data attribute

cy.get('[data-test-id="test-example"]').should('have.length', 5)

Find the link with an href attribute containing the word “questions” and click it


Get in .within()

cy.get() in the .within() command

Since cy.get() is chained off of cy, it always looks for the selector within the entire document. The only exception is when used inside a .within() command.

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


For a detailed explanation of aliasing, read more about aliasing here.

Get the aliased ‘todos’ elements


//...hack hack hack...

//later retrieve the todos

Get the aliased ‘submitBtn’ element

beforeEach(() => {

it('disables on click', () => {

Get the aliased ‘users’ fixture

beforeEach(() => {

it('disables on click', () => {
  // access the array of users
  cy.get('@users').then((users) => {
    // get the first user
    const user = users[0]




  • cy.get() requires being chained off of cy.


  • cy.get() will automatically retry until the element(s) exist in the DOM.

  • cy.get() will automatically retry until assertions you've chained all pass.


  • cy.get() can time out waiting for the element(s) to exist in the DOM.

  • cy.get() can time out waiting for assertions you've added to pass.

Command Log

Get an input and assert on the value

cy.get('input[name="firstName"]').should('have.value', 'Homer')

The commands above will display in the Command Log as:

Command Log get

When clicking on the get command within the command log, the console outputs the following:

Console Log get


Version Changes
5.2.0 Added includeShadowDom option.

See also