赛普拉斯获取特定文本

时间:2020-07-22 14:09:24

标签: javascript cypress

我有这个元素

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

我要检查Label文本是否等于Project

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

但结果是

-'ProjectRequired'
  +'Project'

所以这个选择器也占用了...

如何独立选择并检查?

2 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

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');

答案 1 :(得分:1)

您的定位器选择了标签及其所有内容,只需将定位器更改为如下所示的跨度即可:

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