Cypress条件断言



我有一个表,看起来像这个

1       /   2
abc     /    abc
abc     /    bca
abc     /    cda

现在我的代码看起来像这个

cy.get('[role="row"]').each(($el) => {
cy.get($el).children()
.should('contain', 'abc')
})

但是如何检查第二列是否包含(abc、bca、cda(之一html长得像地狱,但在中间有类似aria-label="的东西;abc";正则表达式是一个好的解决方案吗?我不擅长这一点,你能告诉我它应该是什么样子吗?(开头有很多属性,中间有aria-label="abc",结尾有一些属性(?还是有更好的解决方案?我对js不太了解,下面的代码可能有问题,因为第一个条件总是真的,不应该是

cy.get($el).then(($try) => {
if ($try.html('aria-label' == "abc")) {
cy.log('it contains abc')}
else if ($try.html('aria-label' == "bca")) {
cy.log('it contains bca')}
else if ($try.html('aria-label' == "bca")) {
cy.log('it contains cda')}

else{
cy.log("DONT WORK")
}
})
}

这是假设,因为我不知道html是什么样子的。一种方法是使用CCD_ 1。我假设您正在验证属性aria-label的值

cy.get('[role="row"]').each(($el) => {
expect($el.attr('aria-label').trim()).to.be.oneOf(['abc', 'bca', 'cda'])
})

如果你正在检查元素的innerText,你可以使用:

cy.get('[role="row"]').each(($el) => {
expect($el.text().trim()).to.be.oneOf(['abc', 'bca', 'cda'])
})

$try.html((.includes('xxx'(成功了。

最新更新