在赛普拉斯中如何计算包含文本的元素?

德拉泽夫斯基

在赛普拉斯中,我试图计算包含文本的元素数(在本例中为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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章