Hammad Malick
Hammad Malick

Reputation: 3

cy.click() failed because it requires a DOM element. The subject received was: > undefined

I have made a custom command for logout which I am calling in my afterEach hook but every time I am getting this error. Below is the code attached:

Cypress.Commands.add('logout', () => {
//cy.get('#react-burger-menu-btn').should('be.visible').click({force:true})
cy.xpath("//div[@class = 'bm-burger-button']").click({ force: true })
cy.get('#react-burger-menu-btn')
cy.get('#logout_sidebar_link').click()})

I am using the Swag Labs dummy website. Attaching the website's link as well for reference: https://www.saucedemo.com/

Took help from the documentation but unable to solve the issue.

Upvotes: 0

Views: 1290

Answers (2)

K.Osire
K.Osire

Reputation: 135

You can try waiting for visibility of all the elements involved.

cy.get('#react-burger-menu-btn').should('be.visible')
cy.get('#logout_sidebar_link').should('be.visible')
  .click()

If it does not work, look at the HTML of the menu and try checking other elements for visibility as well.

You should open the devtools and observe which elements are modified after the click (they will flash in the devtools Elements tab).

Upvotes: 3

imkar
imkar

Reputation: 9

Cypress.Commands.add('logout', () => {
    cy.get('button[id="react-burger-menu-btn"]').click()
    cy.get('#logout_sidebar_link').click()
});

Try this

Upvotes: 0

Related Questions