Cypress:如何检查元素是否具有文本,但文本不是特定的?

6

除了检查元素是否有文本,还有其他方法吗?

cy.get('h1').should('have.text','Enter your text')

我有这段代码,但我不想检查文本是否确切匹配。我只想检查元素上是否有文本。


1
所以你想验证文本的一部分而不是整个文本? - Alapan Das
3个回答

17

另一种方式,测试任何非零长度的文本

cy.visit('http://example.com')
cy.get('h1').invoke('text').should('have.length.gt', 0)  // gt == greater than
cy.get('h1').invoke('text').should('not.be.empty')       // not.be.empty == NOT "" 
cy.get('h1').should('not.have.text', "")                 // also NOT "" 

9

如果你想验证部分的文本,你可以:

cy.get('h1').should('include.text','partial text')

如果您只想检查元素是否有一些内部文本,而不管它是什么,可以使用以下方法:
cy.get('h1').invoke('text').should('have.length', 1)

正如@kame所建议的那样,您还可以添加一个断言来确保长度大于0,以防上述方法不起作用。

cy.get('h1').invoke('text').should('have.length.gt', 0)

cy.get('h1').invoke('text').should('have.length.gt', 0) 应该是正确的,对吧? - kame
是的,这也是真的。这取决于我们从invoke(text)得到什么。我也会在答案中添加这个。感谢您的建议@kame。 - Alapan Das
3
我不会使用.should('have.length', 1),@Kame的更正更好。 - Dizzy Al

1

这是如何验证文本的一部分而不是整个文本的方法:

 cy.visit('http://example.com')
 cy.get('h1').should('have.length.greaterThan', 0)  //greater than     
 cy.get('h1').should('not.be.empty')   // not.be.empty == NOT "" 
 cy.get('h1').should('contain.text', 'partial text of full text') // contains 
                                                   partial text of the full text" 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接