Нажмите на текст с точным соответствием в Cypress - PullRequest
1 голос
/ 04 июня 2019

В Cypress команда .contains возвращает все соответствующие элементы, поэтому для щелчка по раскрывающемуся элементу с текстом на нем .contains работает нормально. Но я столкнулся с проблемой, которую мне нужно щелкнуть в раскрывающемся элементе, текст которого называется «Навигационная метка»: проблема возникает из-за того, что в том же выпадающем меню есть другая опция, называемая «Новая метка навигации», и вместо этого она нажимается, так как оно появляется первым.

Есть ли способ щелкнуть по элементу, который точно соответствует желаемому тексту?

Given('I click on the {string} drop down option', option => {
  cy.get(`[data-test="dropdown"]`)
    .find('.item')
    .contains(option)
    .click();
});

Я частично решаю проблему, используя .last(), но я нахожу это решение довольно расплывчатым, поскольку стараюсь сделать свои шаги максимально возможными для повторного использования, и это всего лишь патч, чтобы заставить его работать в этой конкретной проблеме.

Обратите внимание, что тестирование данных для каждого конкретного элемента в раскрывающемся списке невозможно, так как элементы отображаются непосредственно из semantic-ui.

1 Ответ

1 голос
/ 05 июня 2019

Вы можете использовать приведенный ниже фрагмент кода, чтобы щелкнуть по элементу с точным текстом.Это будет работать как шарм, дайте мне знать, если у вас возникнут какие-либо проблемы.

Вы должны обрабатывать, как показано ниже, в Cypress, что эквивалентно getText () в селеновом веб-драйвере.

clickElementWithEaxctTextMatch(eleText) {
  cy.get(".className").each(ele => {
    if (ele.text() === eleText) {
      ele.click();
    }
  });
}
...