赛普拉斯条件断言
Posted
技术标签:
【中文标题】赛普拉斯条件断言【英文标题】:Cypress conditional assertions 【发布时间】:2021-12-22 20:50:44 【问题描述】:我有一张像这样的桌子
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" 的东西 正则表达式是好的解决方案吗?我不擅长这个,你能告诉我它应该是什么样子(开始时有很多 attr,中间有 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。 对不起,我不能,因为这不是我的私人项目。 【参考方案1】:$try.html().includes('xxx') 成功了。
【讨论】:
【参考方案2】:这是假设,因为我不知道 html 的样子。一种方法是使用expect(2).to.be.oneOf([1,2,3])
。我假设您正在验证属性 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'])
)
【讨论】:
我会试一试的。给您带来的不便,谢谢,抱歉以上是关于赛普拉斯条件断言的主要内容,如果未能解决你的问题,请参考以下文章