Interacting with DOM Elements in Cypress
When it comes to end-to-end testing of web applications, Cypress stands out for its speed, ease of use, and real-time browser testing. One of its core strengths lies in how seamlessly it interacts with DOM (Document Object Model) elements. Whether you're testing buttons, forms, or dynamic content, Cypress provides simple and powerful APIs to interact with your web page elements.
In this blog, we’ll walk you through how to interact with DOM elements in Cypress and share some tips and best practices along the way.
๐งฑ What is the DOM in Web Testing?
The DOM represents the structure of a web page. It is a tree of objects that browsers use to render content and respond to user interactions. Automated testing tools like Cypress need to access and manipulate DOM elements to simulate user behavior such as clicking buttons, entering text, selecting items, or validating content.
๐ Selecting DOM Elements in Cypress
Before you interact with an element, you need to select it. Cypress uses the .get() or .find() commands with CSS selectors to locate elements.
javascript
cy.get('.login-button') // by class
cy.get('#username') // by ID
cy.get('input[name="email"]') // by attribute
For deeply nested elements, use .find() to locate elements within a specific parent:
javascript
Copy
Edit
cy.get('.form-container').find('input[type="password"]');
✍️ Typing into Input Fields
To simulate typing, Cypress uses the .type() command.
javascript
Copy
Edit
cy.get('#username').type('testuser');
cy.get('#password').type('P@ssword123');
You can also simulate special keys:
javascript
Copy
Edit
cy.get('#search').type('hello{enter}');
๐ฑ️ Clicking Elements
To simulate clicks:
javascript
Copy
Edit
cy.get('.submit-btn').click();
You can also use .dblclick() for double-click events or .rightclick() for context menus.
✅ Checking Checkboxes and Radio Buttons
Use .check() and .uncheck() for form controls:
javascript
Copy
Edit
cy.get('input[type="checkbox"]').check();
cy.get('input[type="radio"][value="male"]').check();
You can also verify their state using assertions:
javascript
Copy
Edit
cy.get('#terms').should('be.checked');
๐ Working with Dropdowns
Dropdowns are handled using .select():
javascript
Copy
Edit
cy.get('select#country').select('India');
You can verify the selected value:
javascript
Copy
Edit
cy.get('select#country').should('have.value', 'India');
๐งช Asserting Text and Visibility
Use .should() to assert text content, presence, or visibility:
javascript
Copy
Edit
cy.get('.welcome-message').should('contain', 'Welcome');
cy.get('.error-message').should('not.be.visible');
๐ Dealing with Dynamic Elements
Sometimes elements take time to appear (e.g., AJAX content). Cypress retries commands automatically, but you can also use .wait() or .should() to wait for conditions.
javascript
Copy
Edit
cy.get('.loader').should('not.exist');
cy.get('.result').should('be.visible');
๐ Iterating Through Elements
Use .each() to loop through multiple DOM nodes:
javascript
Copy
Edit
cy.get('.product-list li').each(($el, index, $list) => {
cy.wrap($el).should('be.visible');
});
๐ก Best Practices
Use data-* attributes for reliable selectors:
html
Copy
Edit
<button data-cy="submit-order">Submit</button>
javascript
Copy
Edit
cy.get('[data-cy="submit-order"]').click();
Avoid hard waits (cy.wait(3000)) unless necessary.
Use chaining to write clean, readable tests.
Keep selectors simple and stable—avoid relying on class names that might change.
๐ Conclusion
Interacting with DOM elements in Cypress is intuitive, fast, and developer-friendly. By mastering selectors and common commands like .click(), .type(), .select(), and .should(), you can simulate real user behavior and write reliable end-to-end tests.
Whether you're automating login flows, testing form validations, or checking dynamic content, Cypress makes DOM interaction seamless and efficient—bringing confidence and speed to your web development workflow.
Learn Cypress Training
Read More: Working with Cypress Commands: cy.get(), cy.visit(), and More
Read More: Writing Assertions in Cypress
Read More: How Cypress Works Under the Hood
Visit IHUB Talent Training Institute in Hyderabad
Get Direction
Comments
Post a Comment