我有一个 Cypress E2E 测试套件,我想在其中通过表格单元格中显示的文本搜索表格中的行。
我在以下方面取得了一些成功:
cy.get('.p-datatable-tbody').should('be.visible')
.contains('tr', 'The Exact Row I Want To Click')
.then($row => {
$row.click();
});
但是当不止一行包含该文本时,我遇到了问题。
例如,如果前两行表格的单元格包含以下文本:
“不是我想要单击的确切行”
“我想要单击的确切行”
返回第一行而不是第二行 - 因为它确实包含我正在搜索的文本,但不是我正在搜索的确切文本。
是否有任何类型的 .containsExact 函数可以用于此类事情?
非常感谢
这里有一个很好的精确匹配示例如何使用 contains 来匹配精确字符串。
根据您的情况,运行此代码
const reExactMatch = new RegExp('^The Exact Row I Want To Click$')
const match = reExactMatch.test('The Exact Row I Want To Click')
const noMatch = reExactMatch.test('Not The Exact Row I Want To Click')
console.log(match, noMatch) // true, false
在 Cypress
.contains()
命令中,您可以使用带有反斜杠分隔符的缩写形式,这会动态创建 rexeg。
cy.contains('td', /^The Exact Row I Want To Click$/) // look for cell with text
.parent('tr') // find it's row element