У меня есть этот элемент

<label for="prod-field">Project
  <span class="aui-icon">Required</span>
</label>

Я хочу проверить, совпадает ли текст метки с проектом

cy.get('[for="prod-field"]').should('have.text', 'Project')

Но результат

-'ProjectRequired'
  +'Project'

Так что этот селектор возьми и пройди ...

Как я могу выбрать их самостоятельно и проверить?

1
Exc 22 Июл 2020 в 17:09

2 ответа

Лучший ответ

Вы можете сделать что-то вроде:

cy.get('[for="prod-field"]').should(($el) => {
  expect(
    $el
      .contents() // Grab all contents
      .first() // The text node you're looking for
      .text() // Get the text
      .trim() // And trim the white space
  ).to.eq('Project');
});

Как вы можете видеть выше, мы можем сделать это, однако селектор слишком сложен. Я бы порекомендовал вам немного настроить HTML, если вы можете что-то вроде:

<label for="prod-field"
  ><span class="label-text">Project</span>>
  <span class="aui-icon">Required</span>
</label>

Затем вы можете просто сделать это:

cy.get('[for="prod-field"] .label-text').should('have.text', 'Project');
0
konekoya 23 Июл 2020 в 01:11

Ваш локатор выбирает метку и все в ней, просто измените локатор на диапазон следующим образом:

 cy.get('[for="prod-field"] span.label-text').should('have.text', 'Project')
0
Sanja Paskova 23 Июл 2020 в 16:03