文章目录
一、cy.route进行断言
# 开启监听
cy.server()
cy.vistit(xxx)
# 监听路径
cy.route('post','**/upload')
.as('res')
cy.wait('@res').should((xhr)=>{
expect(xhr.responseBody).to.have.property('code',0)
})
二、抛出指定错误信息
cy.get('.xxclass')
.find('img') #找到具体属性
# $会返回一个数组Array
# 判断数组长度
.should(($img)=>{
if($img.length !==1){
throw new Error ('xxx')
}
})
三、环境变量
可以单独新建一个cypress.env.json,这里面的key会覆盖cypress.json中同名变量
使用方法:
Cypress.env('xxx')
四、使用cy.contains()定位元素
cy.contains('add').then(($btn)=>{
$btn.click()
})
五、保存Cookie
cy.setCookie("cypress-session-cookie", tgt)
然后在index中使用
Cypress.Cookies.defaults({
preserve: ['tgt']
})
六、设置断言超时时间
// 一秒
cy.get('.classxx', {timeout:1000})
七、判断前后用例状态,决定是否执行
首先需要在第一个用例增加:
let prevState = 'passed'
然后在beforeEach添加:
beforeEach(functions(){
if(prevState !== "passed"){
this.skip()
}
})
内置的用例状态:skip,pass,failed
然后在afterEach获取当前用例状态,添加:
afterEach(function(){
prevState = this.currentTest.state
})
八、根据属性找元素
cy.get('[type="valxxx"]').click()
中括号里面的就是属性。
九、cy.route的升级版cy.route2(更高版本有更新)
不需要cy.server,直接在触发操作前使用cy.route2,:
cy.route2({
method: "POST",
url: "xxx"
})
.as('res')
使用监听到的返回结果
cy.wait('@res’).its('response.body').should('inclued','"code:"0')
十、使用VS增加个人代码行提示
修改方式:File–Preference–User Snippets–javascription
格式:
{
// 输入it后,按TAB键可以出现it语法的完整格式
“Print to it”: {
"prefix": "it",
"body": [
"it('$1',()=>{",
"$2",
"})"
],
"description": "Log outpu to it"
}
}