Cypress - 断言只存在一个带有文本的元素

Ere*_*555 5 javascript testing cypress

我有一个表,我想确保使用 Cypress 的列中不会重复值。目前,我正在做

cy.get("#myTable")
  .find(".table")
  .contains("unique_value")
  .should("exist")
Run Code Online (Sandbox Code Playgroud)

这段代码确实检查列中的值是否存在,但它不能确保它是表中具有此值的唯一条目。如何通过 Cypress 检查唯一性?

Ric*_*sen 14

令人惊讶的是,这

cy.get("#myTable")
  .find(".table")
  .contains("unique_value")
  .should('have.length', 1);
Run Code Online (Sandbox Code Playgroud)

甚至这个

cy.get("#myTable")
  .find(".table td")
  .contains("unique_value")
  .should('have.length', 1);
Run Code Online (Sandbox Code Playgroud)

将返回误报- 如果您使用两个unique_value表格单元格运行它,它会错误地通过。

Ref contains - yields表示返回单个值。


我发现最好的方法是将contains()向上移动到.find()选择器中,

cy.get("#myTable")
  .find('.table td:contains("unique_value")')
  .should('have.length', 1)
Run Code Online (Sandbox Code Playgroud)

以上测试了单元格之间的唯一性。如果您还想测试单元格内的值,最简单的方法是调用该text()方法。

cy.get("#myTable")
  .find('.table td:contains("unique_value")')
  .should('have.length', 1)          // ensure only one cell has value
  .invoke('text')
  .should('equal', 'unique_value')   // check the exact content of the cell
Run Code Online (Sandbox Code Playgroud)

请参阅本页的第一个示例