在赛普拉斯中,我试图计算包含文本的元素数(在本例中为li中的按钮数)。使用“包含”时,返回的项目数始终等于1,因为“包含”仅给出文档中包含搜索文本的第一项。
cy.get('li')
.contains('button', 'Submit')
.its('length')
.then(elLength => {
// I want to test here the number of all buttons in li elements containig word 'Submit'
}
当然,这种方式不起作用,因为elLength始终为1(如果未找到任何项,则为0)。
赛普拉斯中是否还有其他方法可以返回带有文本的所有元素,而我可以计算它们?
赛普拉斯get()
使用与jQuery相同的选择器。因此,您可以:contains
用来获取所有包含文本的元素。
由于赛普拉斯contains()
仅包含可见的DOM元素,因此您必须添加:visible
才能获得相同的行为。
要确保只有一个可见按钮包含“提交”:
cy.get('button:visible:contains("Submit")').should('have.length', 1);
为了确保“ li”元素中只有一个可见按钮包含文本“ Submit”:
cy.get('li button:visible:contains("Submit")').should('have.length', 1);
要计算包含一个或多个可见“提交”按钮的“ li”元素:
cy.get('li:has(button:visible:contains("Submit"))').should('have.length', 1);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句