Cypress click element by ID / XPATH / Name?

In Cypress, it works like this:

cy.get('button[id="category"]').click()

Notice that I just used button as an example here, you should replace that with the label of your element: div, select, textarea, etc...


I think, it is possible by adding a plug-in as suggested in Cypress website, please refer the following link https://docs.cypress.io/plugins/#content. If you refer the custom command section you could see cypress-xpath which takes you to following github link https://github.com/cypress-io/cypress-xpath

npm install -D cypress-xpath

Then include in your project's cypress/support/index.js

require('cypress-xpath')

Sample usage given below:

it('finds list items', () => {
  cy.xpath('//ul[@class="todo-list"]//li')
    .should('have.length', 3)
})

Please try after installing the plug-in and updating the support/index.js file.


There are 2 things to be done if trying to use xpath in cypress:-

  1. In the file 'index.js' which sits under the folder 'YourProject'->'cypress'->'support', add the entry "require('cypress-xpath')"
  2. In the file 'Dockerfile.cypress' which sits under the folder 'YourProject'->'configuration'->'docker', add the entry "RUN npm install cypress-xpath"

That's all you need to use all the xpath functions to uniquely identify all elements in your cypress tests. I personally prefer using xpath since this gives me more control on the UI elements. Hope this will make life more easier in using cypress.