In Cypress, .contains
command yields all matching elements, so for clicking in a dropdown item with a text on it, .contains
works fine. But I'm facing the problem I need to click in a dropdown item which text is 'Navigation Label': the problem comes as there's another option, in the same dropdown, called 'New Navigation Label', and it's being press instead, as it's appearing first.
Is there a way to click in an element that exactly matches the text you want?
Given('I click on the {string} drop down option', option => {
cy.get(`[data-test="dropdown"]`)
.find('.item')
.contains(option)
.click();
});
I partially solve the problem using a .last()
, but I find this solution quite vague as I try to keep my steps as reusable as possible, and this is just a patch to make it work in this specific problem.
Note that having a data-test for each specific item in the dropdown is not possible, as items are rendered directly from semantic-ui.