Automated tests 在Cypress中,如何计算包含文本的元素?
在Cypress中,我试图计算有多少元素(在本例中,li中有多少按钮)包含文本。使用“contains”时,返回的项目数始终等于一,因为“contains”只给出文档中包含搜索文本的第一个项目Automated tests 在Cypress中,如何计算包含文本的元素?,automated-tests,cypress,Automated Tests,Cypress,在Cypress中,我试图计算有多少元素(在本例中,li中有多少按钮)包含文本。使用“contains”时,返回的项目数始终等于一,因为“contains”只给出文档中包含搜索文本的第一个项目 cy.get('li') .contains('button', 'Submit') .its('length') .then(elLength => { // I want to
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)
Cypress中是否有其他方法可以返回包含文本的所有元素,并且我可以对它们进行计数?如果您知道需要使用该标签的按钮数量,您可以尝试:
cy.get('li').then($el => {
cy.wrap($el).find(".button").then($els => {
expect($els.filter(index => $els.eq(index).is(':contains(Submit)'))).to.have.length(your_amount);
})
Cypressget()
使用与jQuery相同的选择器。因此,您可以使用:contains
获取包含文本的所有元素。由于Cypress
contains()
只包含可见的DOM元素,因此必须添加:visible
才能获得相同的行为
要确保只有一个可见按钮包含“提交”,请执行以下操作:
cy.get('button:visible:contains(“Submit”))。应该('have.length',1);
要确保“li”元素中只有一个可见按钮包含文本“Submit”:
cy.get('li按钮:可见:包含(“提交”))。应该('have.length',1);
要计算包含一个或多个可见“提交”按钮的“li”元素,请执行以下操作:
cy.get('li:has(按钮:visible:contains(“Submit”))))。应该('have.length',1);
谢谢你,你的回答帮了我很大的忙。最后,在获得了非常鼓舞人心的反对票之后;),我找到了一些解决这个问题的方法:cy.get('li')。然后($el=>{cy.wrap($el)。find(Cypress.$('button:contains(“Submit”))。它的('length')。应该('eq',期望值)