6、断言方法
Cypress的断言基于当下流行的Chai断言库,其支持多种风格的断言,包括BDD(expect/should)和TDD(assert)形式的断言。常见的断言有:
-
针对长度(Length)的断言
//重试,直到找到3个匹配的<li.selected>
cy.get(‘li.selected’).should(‘have.length’,3)
-
针对类(class)的断言
//重试,直到input元素没有类被disabled为止(或者超时为止)
cy.get(input’).should(‘not.have.class’,’disabled)
-
针对值(value)的断言
//断言teztarea的值为“itesting”
cy.get(‘textarea’).should(‘have.value’,’itesting’)
-
针对文本内容(Text Content)的断言
cy.get(‘a’).should(‘not.contain’,’click me’),如果是url命令,则使用
cy.url().should(‘include’,’/dashboard’)
-
判断元素是否可见
.should(‘be.visible’)
-
判断元素是否存在
.should(‘exist’)或者.should(‘not.exist’)
-
针对元素状态(state)的断言
cy.get(‘:radio’).should(‘be.checked’)
-
针对css的断言
//断言completed这个类有匹配的css
cy.get(‘.completed’).should(‘have.css’,’text-decoration’,’line-through’)
-
针对回调函数(callback)的断言
假设源html如下
<div class=”main-abc123 heading-xyz987”>Introduction</div>
如果需要断判断类名是否一定含有heading字样,则断言如下:
cy.get(‘div’)
.should(($div)=>{
expect($div).to.have.length(1)
Const className = $div[0].className
//检查类名匹配通配符/heading-/
expect(className).to.match(/heading-/)
})
更多断言库及其用法,可参考网上搜索关于BDD和TDD断言的说明。