Automated tests 在Cypress中,如何计算包含文本的元素?

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

在Cypress中,我试图计算有多少元素(在本例中,li中有多少按钮)包含文本。使用“contains”时,返回的项目数始终等于一,因为“contains”只给出文档中包含搜索文本的第一个项目

          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);
 })
Cypress
get()
使用与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',期望值)